diff --git a/src/main/app-controls/mcp/toolRegistry.test.ts b/src/main/app-controls/mcp/toolRegistry.test.ts index 438af611..4373c645 100644 --- a/src/main/app-controls/mcp/toolRegistry.test.ts +++ b/src/main/app-controls/mcp/toolRegistry.test.ts @@ -723,6 +723,9 @@ describe("Poracode app control tools — settings", () => { return { ...defaultSharedSettings, themeMode: "light", + agentSettings: { + cursor: { structuredRuntime: "sdk", sdkApiKey: "lc-safe:cursor-secret-token" }, + }, acpRegistryInstalledAgents: { registryAgent: { source: "x" } as never }, agentInstances: { claudeProfile: { @@ -772,7 +775,12 @@ describe("Poracode app control tools — settings", () => { }; const serialized = JSON.stringify(result); expect(serialized).not.toContain("super-secret-token"); + expect(serialized).not.toContain("cursor-secret-token"); expect(serialized).not.toContain("visible"); + expect( + (result.settings as unknown as { agentSettings: Record> }) + .agentSettings.cursor?.sdkApiKey, + ).toBe("«redacted»"); const env = result.settings.agentInstances.claudeProfile?.environment; expect(env).toEqual({ ANTHROPIC_API_KEY: { sensitive: true }, @@ -848,6 +856,20 @@ describe("Poracode app control tools — settings", () => { expect(settingsWrite).not.toHaveBeenCalled(); }); + it("update_settings refuses sensitive agent settings", async () => { + const { ctx, settingsWrite } = context({ settings: settingsWithSecret() }); + await expect( + dispatchTool( + "update_settings", + { + patch: { agentSettings: { cursor: { sdkApiKey: "replacement" } } }, + }, + ctx, + ), + ).rejects.toThrow(/cursor\.sdkApiKey/); + expect(settingsWrite).not.toHaveBeenCalled(); + }); + it("update_settings refuses mcpServers and points to the dedicated tools", async () => { const { ctx, settingsWrite } = context({ settings: settingsWithSecret() }); await expect( diff --git a/src/main/app-controls/mcp/tools/settings.ts b/src/main/app-controls/mcp/tools/settings.ts index a3f573fe..6e60c417 100644 --- a/src/main/app-controls/mcp/tools/settings.ts +++ b/src/main/app-controls/mcp/tools/settings.ts @@ -1,5 +1,6 @@ import { z } from "zod"; import type { McpServer, McpTransport } from "@/shared/contracts"; +import { isSensitiveAgentSetting, sensitiveAgentSettingKeys } from "@/shared/agentSecrets"; import { normalizeSharedSettings, type SharedSettings } from "@/shared/settings"; import { mergeManagedSharedSettings } from "../../../sharedSettingsFile"; import type { ToolDomain } from "./types"; @@ -71,6 +72,7 @@ export const settingsTools: ToolDomain = { update_settings: (args, ctx) => { const { patch } = updateArgsSchema.parse(args); const rejected = Object.keys(patch).filter((key) => PROTECTED_SETTINGS_KEYS.has(key)); + const rejectedAgentSecrets = findPatchedAgentSecrets(patch.agentSettings); if (rejected.length > 0) { const hint = rejected.includes("mcpServers") ? " Manage MCP servers with add_mcp_server, update_mcp_server, and remove_mcp_server." @@ -81,6 +83,13 @@ export const settingsTools: ToolDomain = { )}.${hint}`, ); } + if (rejectedAgentSecrets.length > 0) { + throw new Error( + `These sensitive agent settings are managed elsewhere and cannot be changed with this tool: ${rejectedAgentSecrets.join( + ", ", + )}.`, + ); + } const onDisk = ctx.settings.read(); const candidate = deepMerge(onDisk as Record, patch); const normalized = normalizeSharedSettings(candidate); @@ -125,6 +134,15 @@ function deepMerge( * An agent can therefore see what is configured without ever reading a secret. */ export function redactSharedSettings(settings: SharedSettings): Record { + const agentSettings = Object.fromEntries( + Object.entries(settings.agentSettings).map(([agentKind, values]) => { + const next = { ...values }; + for (const key of sensitiveAgentSettingKeys(agentKind)) { + if (key in next) next[key] = REDACTED_VALUE; + } + return [agentKind, next]; + }), + ); const agentInstances = Object.fromEntries( Object.entries(settings.agentInstances).map(([id, instance]) => { if (!instance.environment) return [id, instance]; @@ -138,7 +156,17 @@ export function redactSharedSettings(settings: SharedSettings): Record { + if (!isPlainObject(settings)) return []; + return Object.keys(settings) + .filter((key) => isSensitiveAgentSetting(agentKind, key)) + .map((key) => `${agentKind}.${key}`); + }); } /** Mask the credential-bearing values of one MCP server's transport. */ diff --git a/src/main/ipc/localHandlers.ts b/src/main/ipc/localHandlers.ts index c7690b31..dd0b6d25 100644 --- a/src/main/ipc/localHandlers.ts +++ b/src/main/ipc/localHandlers.ts @@ -47,6 +47,7 @@ import { setProfileIdentityResponse, } from "../profile"; import { + applyAgentSecretSetting, applyClaudeProfileEnvironment, mergeManagedSharedSettings, readSharedSettingsFile, @@ -351,6 +352,17 @@ export function createLocalIpcHandlers( options.updatePowerSaveBlocker(); options.onSharedSettingsChanged?.(merged); }, + setAgentSecretSetting: (payload) => { + const settingsPath = options.requirePoracodePaths().settingsPath; + const { settings, storedValue } = applyAgentSecretSetting( + readSharedSettingsFile(settingsPath), + payload, + dirname(settingsPath), + ); + writeSharedSettingsFile(settingsPath, settings); + options.onSharedSettingsChanged?.(settings); + return { storedValue }; + }, removeCrossagentRoutingOverride: ({ tags }) => { const settingsPath = options.requirePoracodePaths().settingsPath; const current = readSharedSettingsFile(settingsPath); diff --git a/src/main/sharedSettingsFile.test.ts b/src/main/sharedSettingsFile.test.ts index 3facbc76..eca232c1 100644 --- a/src/main/sharedSettingsFile.test.ts +++ b/src/main/sharedSettingsFile.test.ts @@ -4,7 +4,7 @@ import { join } from "node:path"; import { afterEach, describe, expect, it } from "vitest"; import { allUsageProviderDescriptors } from "@poracode/agents-usage"; import type { AgentInstanceConfig } from "@/shared/contracts"; -import { isEncryptedSecret } from "@/shared/secretStorage"; +import { decryptSecret, isEncryptedSecret } from "@/shared/secretStorage"; import { DEFAULT_USAGE_DISABLED_PROVIDER_IDS, DEFAULT_USAGE_ENABLED_PROVIDER_IDS, @@ -12,8 +12,10 @@ import { type SharedSettings, } from "@/shared/settings"; import { + applyAgentSecretSetting, applyClaudeProfileEnvironment, mergeManagedSharedSettings, + patchSharedSettingsFile, readSharedSettingsFile, writeSharedSettingsFile, } from "./sharedSettingsFile"; @@ -492,6 +494,81 @@ describe("sharedSettingsFile", () => { }); }); +describe("applyAgentSecretSetting", () => { + it("seals Cursor SDK API keys and lets the supervisor decrypt the stored value", () => { + const dir = makeTempDir(); + const { settings, storedValue } = applyAgentSecretSetting( + defaultSharedSettings, + { agentKind: "cursor", key: "sdkApiKey", value: " cursor-secret " }, + dir, + ); + + expect(storedValue).not.toBeNull(); + expect(isEncryptedSecret(storedValue ?? "")).toBe(true); + expect(storedValue).not.toContain("cursor-secret"); + expect(settings.agentSettings.cursor?.sdkApiKey).toBe(storedValue); + expect(decryptSecret(dir, storedValue ?? "")).toBe("cursor-secret"); + }); + + it("pins encrypted agent secrets during ordinary renderer settings writes", () => { + const dir = makeTempDir(); + const { settings: onDisk, storedValue } = applyAgentSecretSetting( + defaultSharedSettings, + { agentKind: "cursor", key: "sdkApiKey", value: "cursor-secret" }, + dir, + ); + const incoming = { + ...defaultSharedSettings, + agentSettings: { + cursor: { sdkApiKey: "plaintext-overwrite", structuredRuntime: "sdk" }, + }, + }; + + const merged = mergeManagedSharedSettings(onDisk, incoming); + expect(merged.agentSettings.cursor).toEqual({ + sdkApiKey: storedValue, + structuredRuntime: "sdk", + }); + }); + + it("clears a saved key only through the dedicated secret path", () => { + const dir = makeTempDir(); + const saved = applyAgentSecretSetting( + defaultSharedSettings, + { agentKind: "cursor", key: "sdkApiKey", value: "cursor-secret" }, + dir, + ); + const cleared = applyAgentSecretSetting( + saved.settings, + { agentKind: "cursor", key: "sdkApiKey", value: "" }, + dir, + ); + + expect(cleared.storedValue).toBeNull(); + expect(cleared.settings.agentSettings.cursor?.sdkApiKey).toBeUndefined(); + }); + + it("preserves a saved key when a remote patch replaces ordinary agent settings", () => { + const dir = makeTempDir(); + const settingsPath = join(dir, "settings.json"); + const saved = applyAgentSecretSetting( + defaultSharedSettings, + { agentKind: "cursor", key: "sdkApiKey", value: "cursor-secret" }, + dir, + ); + writeSharedSettingsFile(settingsPath, saved.settings); + + const patched = patchSharedSettingsFile(settingsPath, { + agentSettings: { cursor: { structuredRuntime: "acp" } }, + }); + + expect(patched.agentSettings.cursor).toEqual({ + structuredRuntime: "acp", + sdkApiKey: saved.storedValue, + }); + }); +}); + describe("applyClaudeProfileEnvironment", () => { function claudeProfileSettings(environment?: AgentInstanceConfig["environment"]): SharedSettings { const instance: AgentInstanceConfig = { diff --git a/src/main/sharedSettingsFile.ts b/src/main/sharedSettingsFile.ts index 8c1d2f7e..3917ecb1 100644 --- a/src/main/sharedSettingsFile.ts +++ b/src/main/sharedSettingsFile.ts @@ -5,6 +5,7 @@ import type { AgentInstanceEnvVar, SetClaudeProfileEnvironmentPayload, } from "@/shared/contracts"; +import { isSensitiveAgentSetting, sensitiveAgentSettingKeys } from "@/shared/agentSecrets"; import { encryptSecret } from "@/shared/secretStorage"; import { defaultSharedSettings, @@ -41,10 +42,12 @@ export function patchSharedSettingsFile( settingsPath: string, patch: { [K in keyof SharedSettings]?: SharedSettings[K] | undefined }, ): SharedSettings { - const next = readSharedSettingsFile(settingsPath); + const onDisk = readSharedSettingsFile(settingsPath); + const incoming = { ...onDisk }; for (const [key, value] of Object.entries(patch)) { - if (value !== undefined) (next as Record)[key] = value; + if (value !== undefined) (incoming as Record)[key] = value; } + const next = mergeManagedSharedSettings(onDisk, incoming); writeSharedSettingsFile(settingsPath, next); return next; } @@ -66,6 +69,22 @@ export function mergeManagedSharedSettings( onDisk: SharedSettings, incoming: SharedSettingsInput, ): SharedSettings { + const agentSettings = { ...incoming.agentSettings }; + for (const agentKind of new Set([ + ...Object.keys(onDisk.agentSettings), + ...Object.keys(incoming.agentSettings), + ])) { + const sensitiveKeys = sensitiveAgentSettingKeys(agentKind); + if (sensitiveKeys.length === 0) continue; + const values = { ...agentSettings[agentKind] }; + for (const key of sensitiveKeys) { + const stored = onDisk.agentSettings[agentKind]?.[key]; + if (stored === undefined) delete values[key]; + else values[key] = stored; + } + agentSettings[agentKind] = values; + } + const rendererManagedInstances = Object.fromEntries( Object.entries(incoming.agentInstances) .filter(([, instance]) => instance.driver !== "acp-generic") @@ -88,6 +107,7 @@ export function mergeManagedSharedSettings( ); return { ...incoming, + agentSettings, acpRegistryInstalledAgents: onDisk.acpRegistryInstalledAgents, agentInstances: { ...rendererManagedInstances, @@ -99,6 +119,38 @@ export function mergeManagedSharedSettings( }; } +export function applyAgentSecretSetting( + settings: SharedSettings, + payload: { agentKind: string; key: string; value: string }, + baseDir: string, +): { settings: SharedSettings; storedValue: string | null } { + if (!isSensitiveAgentSetting(payload.agentKind, payload.key)) { + throw new Error(`Unsupported sensitive agent setting: ${payload.agentKind}.${payload.key}`); + } + + const current = settings.agentSettings[payload.agentKind] ?? {}; + const nextValues = { ...current }; + const value = payload.value.trim(); + let storedValue: string | null = null; + if (value) { + storedValue = encryptSecret(baseDir, value); + nextValues[payload.key] = storedValue; + } else { + delete nextValues[payload.key]; + } + + return { + settings: { + ...settings, + agentSettings: { + ...settings.agentSettings, + [payload.agentKind]: nextValues, + }, + }, + storedValue, + }; +} + /** * Apply a Claude profile's environment edit, sealing any `sensitive` value that * is not already sealed. `baseDir` is the settings directory (passed through to diff --git a/src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx b/src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx index a3090690..f8ce2087 100644 --- a/src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +++ b/src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx @@ -66,6 +66,8 @@ export interface ProviderModelMenuProps { lockedAgentKind?: string; presentationMode?: ThreadPresentationMode; isDisabled?: boolean; + /** Fast mode is on for the current draft, so supported rows mark it filled. */ + isFastEnabled?: boolean; hideLabelOnWrap?: boolean; forceHideLabel?: boolean; collapseTier?: number; @@ -259,6 +261,7 @@ export function ProviderModelMenu(props: ProviderModelMenuProps) { lockedAgentKind, presentationMode, isDisabled, + isFastEnabled = false, hideLabelOnWrap, forceHideLabel = false, collapseTier, @@ -472,6 +475,7 @@ export function ProviderModelMenu(props: ProviderModelMenuProps) { modelRowHeight={mobile ? MODEL_MENU_ROW_HEIGHT_MOBILE : MODEL_MENU_ROW_HEIGHT} mobile={mobile} mobileExpanded={mobile && expanded} + isFastEnabled={isFastEnabled} toggleFavorite={(providerKind, modelId, rowPresentationMode) => toggleFavoriteModel( providerKind, @@ -520,6 +524,7 @@ function WindowedProviderModelList(props: { modelRowHeight: number; mobile: boolean; mobileExpanded: boolean; + isFastEnabled: boolean; toggleFavorite: ( providerKind: string, modelId: string, @@ -535,6 +540,7 @@ function WindowedProviderModelList(props: { modelRowHeight, mobile, mobileExpanded, + isFastEnabled, toggleFavorite, onSelect, } = props; @@ -818,10 +824,16 @@ function WindowedProviderModelList(props: { {name} {item.supportsFast ? ( + // Filled while Fast mode is on, outlined when the model + // merely supports it. ) : null} {mutedHint ? ( diff --git a/src/renderer/components/providers/composerControlBuilders.tsx b/src/renderer/components/providers/composerControlBuilders.tsx index a70a11da..f93ce528 100644 --- a/src/renderer/components/providers/composerControlBuilders.tsx +++ b/src/renderer/components/providers/composerControlBuilders.tsx @@ -1,4 +1,5 @@ import { ClipboardList, Hammer } from "lucide-react"; +import type { MessageDescriptor } from "@lingui/core"; import { msg } from "@lingui/core/macro"; import type { ComposerControl } from "@/renderer/components/thread/ThreadComposer"; import type { AgentCapability, ThreadConfig } from "@/shared/contracts"; @@ -45,12 +46,16 @@ export function planWorkToggle(input: { export function fullAccessToggle(input: { isFullAccess: boolean; isDisabled: boolean; + restrictedLabel?: string; + restrictedDisplayLabel?: MessageDescriptor; onChange: (isSelected: boolean) => void; }): ComposerControl { return { kind: "toggle", - label: input.isFullAccess ? "Full access" : "Supervised", - displayLabel: input.isFullAccess ? msg`Full access` : msg`Supervised`, + label: input.isFullAccess ? "Full access" : (input.restrictedLabel ?? "Supervised"), + displayLabel: input.isFullAccess + ? msg`Full access` + : (input.restrictedDisplayLabel ?? msg`Supervised`), iconKind: "permission", isSelected: input.isFullAccess, isCurrentState: true, diff --git a/src/renderer/components/providers/cursor/index.test.tsx b/src/renderer/components/providers/cursor/index.test.tsx index f2e52799..797724d4 100644 --- a/src/renderer/components/providers/cursor/index.test.tsx +++ b/src/renderer/components/providers/cursor/index.test.tsx @@ -19,8 +19,8 @@ const sdkCapabilities: AgentCapability = { { id: "workspace-write", label: "Workspace Sandbox" }, { id: "danger-full-access", label: "No Sandbox" }, ], - defaultApprovalPolicy: "default", - defaultSandboxMode: "workspace-write", + defaultApprovalPolicy: "never", + defaultSandboxMode: "danger-full-access", bypassPermissions: { approvalPolicy: "never", sandboxMode: "danger-full-access", @@ -53,7 +53,7 @@ function permissionToggle( } describe("Cursor composer controls", () => { - it("shows the active structured runtime beside the model controls", () => { + it("does not duplicate the active structured runtime in the composer", () => { const controls = getComposerControls("cursor")?.({ capabilities: sdkCapabilities, config: { model: "auto" }, @@ -62,7 +62,7 @@ describe("Cursor composer controls", () => { presentationMode: "gui", }); - expect(controls?.[0]).toMatchObject({ kind: "static", value: "SDK" }); + expect(controls?.some((control) => control.kind === "static")).toBe(false); }); it("enables and displays full access only when both SDK safety controls bypass", () => { @@ -77,6 +77,7 @@ describe("Cursor composer controls", () => { ); expect(supervised.isSelected).toBe(false); + expect(supervised.label).toBe("Auto-review"); supervised.onChange?.(true); expect(onConfigChange).toHaveBeenCalledWith({ approvalPolicy: "never", @@ -92,6 +93,7 @@ describe("Cursor composer controls", () => { onConfigChange, ); expect(unrestricted.isSelected).toBe(true); + expect(unrestricted.label).toBe("Full access"); }); it("restores the SDK's safe defaults when full access is disabled", () => { diff --git a/src/renderer/components/providers/cursor/index.tsx b/src/renderer/components/providers/cursor/index.tsx index 7499b964..a63e0882 100644 --- a/src/renderer/components/providers/cursor/index.tsx +++ b/src/renderer/components/providers/cursor/index.tsx @@ -1,5 +1,6 @@ export * from "./CursorIcon"; +import { msg } from "@lingui/core/macro"; import { CursorIcon } from "./CursorIcon"; import providerManifest from "./manifest"; import type { ComposerControl } from "@/renderer/components/thread/ThreadComposer"; @@ -46,16 +47,6 @@ registerComposerControls(PROVIDER_KIND, ({ capabilities, config, isDisabled, onC (unrestricted.sandboxMode === undefined || config.sandboxMode === unrestricted.sandboxMode); const controls: ComposerControl[] = [ - ...(capabilities.runtimeLabel - ? [ - { - kind: "static" as const, - value: capabilities.runtimeLabel, - hideLabelOnWrap: true, - tier: 6, - }, - ] - : []), ...(hasPlanMode ? [ planWorkToggle({ @@ -70,6 +61,8 @@ registerComposerControls(PROVIDER_KIND, ({ capabilities, config, isDisabled, onC fullAccessToggle({ isFullAccess, isDisabled, + restrictedLabel: "Auto-review", + restrictedDisplayLabel: msg`Auto-review`, onChange: (isSelected) => { if (isSelected) { onConfigChange(unrestricted); @@ -80,7 +73,8 @@ registerComposerControls(PROVIDER_KIND, ({ capabilities, config, isDisabled, onC ...(capabilities.sandboxModes.length > 0 ? { sandboxMode: - capabilities.defaultSandboxMode ?? + capabilities.sandboxModes.find(({ id }) => id !== unrestricted.sandboxMode) + ?.id ?? capabilities.sandboxModes[0]?.id ?? "workspace-write", } diff --git a/src/renderer/components/providers/qoder/index.test.tsx b/src/renderer/components/providers/qoder/index.test.tsx index 24896607..46975eb0 100644 --- a/src/renderer/components/providers/qoder/index.test.tsx +++ b/src/renderer/components/providers/qoder/index.test.tsx @@ -2,7 +2,8 @@ import { describe, expect, it, vi } from "vitest"; import type { ComposerControl } from "@/renderer/components/thread/ThreadComposer"; -import type { AgentCapability, ThreadConfig } from "@/shared/contracts"; +import { resolveProviderDraftConfig } from "@/renderer/components/thread/threadDraftViewHelpers"; +import type { AgentCapability, AgentStatus, ThreadConfig } from "@/shared/contracts"; import { getComposerControls } from "../providerComposer"; import "./index"; @@ -22,7 +23,7 @@ const capabilities: AgentCapability = { liveInputMode: "terminal", presentationMode: "terminal", presentationModes: ["terminal", "gui"], - defaultApprovalPolicy: "default", + defaultApprovalPolicy: "bypassPermissions", settingDefs: [], }; @@ -37,11 +38,22 @@ function isModeControl(control: ComposerControl): boolean { } describe("Qoder composer controls", () => { - it("shows Work mode with Default permissions by default", () => { + it("resolves a fresh draft to Bypass Permissions", () => { + const agent = { + kind: "qoder", + label: "Qoder", + installed: true, + capabilities, + } as AgentStatus; + + expect(resolveProviderDraftConfig(agent).approvalPolicy).toBe("bypassPermissions"); + }); + + it("shows Work mode with Bypass Permissions by default", () => { const onConfigChange = vi.fn<(patch: Partial) => void>(); const controls = getComposerControls("qoder")?.({ capabilities, - config: { model: "auto", mode: "agent", approvalPolicy: "default" }, + config: { model: "auto", mode: "agent", approvalPolicy: "bypassPermissions" }, isDisabled: false, onConfigChange, presentationMode: "gui", @@ -53,7 +65,7 @@ describe("Qoder composer controls", () => { }); expect( controls?.find((control) => isMenuControl(control) && control.iconKind === "permission"), - ).toMatchObject({ value: "default" }); + ).toMatchObject({ value: "bypassPermissions" }); }); it("keeps Plan as the alternate mode", () => { diff --git a/src/renderer/components/thread/ThreadComposer.tsx b/src/renderer/components/thread/ThreadComposer.tsx index 0152a3da..ce5d836e 100644 --- a/src/renderer/components/thread/ThreadComposer.tsx +++ b/src/renderer/components/thread/ThreadComposer.tsx @@ -85,6 +85,7 @@ export type ComposerControl = lockedAgentKind?: string; presentationMode?: ThreadPresentationMode; isDisabled?: boolean; + isFastEnabled?: boolean; hideLabelOnWrap?: boolean; openSignal?: number; onChange: (next: { @@ -442,6 +443,7 @@ export function ThreadComposer(props: { {...(control.lockedAgentKind ? { lockedAgentKind: control.lockedAgentKind } : {})} {...(control.presentationMode ? { presentationMode: control.presentationMode } : {})} {...(control.isDisabled !== undefined ? { isDisabled: control.isDisabled } : {})} + {...(control.isFastEnabled !== undefined ? { isFastEnabled: control.isFastEnabled } : {})} {...(control.openSignal !== undefined ? { openSignal: control.openSignal } : {})} {...(hideOnWrap || shouldHideLabel ? { diff --git a/src/renderer/components/thread/ThreadDraftView.tsx b/src/renderer/components/thread/ThreadDraftView.tsx index c27a824b..8bed8344 100644 --- a/src/renderer/components/thread/ThreadDraftView.tsx +++ b/src/renderer/components/thread/ThreadDraftView.tsx @@ -402,8 +402,8 @@ export function ThreadDraftView(props: { model: nextModel, effort: nextEffort, ...(nextContext ? { contextSize: nextContext } : {}), - ...(nextFast ? { fast: nextFast } : {}), - ...(nextThinking ? { thinking: nextThinking } : {}), + ...(resolved.fast !== undefined ? { fast: resolved.fast } : {}), + ...(resolved.thinking !== undefined ? { thinking: resolved.thinking } : {}), mode: nextMode, approvalPolicy: nextApproval, approvalsReviewer: nextReviewer, @@ -453,8 +453,8 @@ export function ThreadDraftView(props: { model: nextModel, effort: nextEffort, ...(nextContext ? { contextSize: nextContext } : {}), - ...(nextFast ? { fast: nextFast } : {}), - ...(nextThinking ? { thinking: nextThinking } : {}), + fast: nextFast, + thinking: nextThinking, }; providerConfigsRef.current[effectiveAgentKind] = corrected; if (!isHomeScope) { @@ -465,8 +465,8 @@ export function ThreadDraftView(props: { model: nextModel, effort: nextEffort, ...(nextContext ? { contextSize: nextContext } : {}), - ...(nextFast ? { fast: nextFast } : {}), - ...(nextThinking ? { thinking: nextThinking } : {}), + fast: nextFast, + thinking: nextThinking, mode, approvalPolicy, approvalsReviewer, @@ -566,8 +566,8 @@ export function ThreadDraftView(props: { model: nextModel, effort: nextEffort, ...(nextContext ? { contextSize: nextContext } : {}), - ...(nextFast ? { fast: nextFast } : {}), - ...(nextThinking ? { thinking: nextThinking } : {}), + ...(resolved.fast !== undefined ? { fast: resolved.fast } : {}), + ...(resolved.thinking !== undefined ? { thinking: resolved.thinking } : {}), mode: nextMode, approvalPolicy: nextApproval, approvalsReviewer: nextReviewer, @@ -692,8 +692,8 @@ export function ThreadDraftView(props: { model: resolved.model, effort: resolved.effort, ...(resolved.contextSize ? { contextSize: resolved.contextSize } : {}), - ...(resolved.fast ? { fast: resolved.fast } : {}), - ...(resolved.thinking ? { thinking: resolved.thinking } : {}), + ...(resolved.fast !== undefined ? { fast: resolved.fast } : {}), + ...(resolved.thinking !== undefined ? { thinking: resolved.thinking } : {}), mode: resolved.mode, approvalPolicy: resolved.approvalPolicy, approvalsReviewer: resolved.approvalsReviewer, @@ -725,8 +725,8 @@ export function ThreadDraftView(props: { model, effort, ...(contextSize ? { contextSize } : {}), - ...(fast ? { fast } : {}), - ...(thinking ? { thinking } : {}), + fast, + thinking, mode, approvalPolicy, approvalsReviewer, @@ -756,8 +756,8 @@ export function ThreadDraftView(props: { model: resolved.model, effort: resolved.effort, ...(resolved.contextSize ? { contextSize: resolved.contextSize } : {}), - ...(resolved.fast ? { fast: resolved.fast } : {}), - ...(resolved.thinking ? { thinking: resolved.thinking } : {}), + ...(resolved.fast !== undefined ? { fast: resolved.fast } : {}), + ...(resolved.thinking !== undefined ? { thinking: resolved.thinking } : {}), mode: resolved.mode, approvalPolicy: resolved.approvalPolicy, approvalsReviewer: resolved.approvalsReviewer, diff --git a/src/renderer/components/thread/buildModelPickerControls.test.ts b/src/renderer/components/thread/buildModelPickerControls.test.ts index e43ea2be..25d0e31e 100644 --- a/src/renderer/components/thread/buildModelPickerControls.test.ts +++ b/src/renderer/components/thread/buildModelPickerControls.test.ts @@ -185,6 +185,30 @@ describe("buildProviderModelMenuProviders", () => { ]); }); + it("uses Cursor defaults until a visibility surface is explicitly configured", () => { + const withDefaults: AgentStatus = { + ...cursorStatus, + capabilities: { + ...cursorStatus.capabilities, + defaultHiddenModels: ["gpt-5"], + }, + }; + + const defaultProviders = buildProviderModelMenuProviders([withDefaults], { + presentationMode: "terminal", + }); + expect(defaultProviders[0]?.capabilities.models.map(({ id }) => id)).toEqual(["composer-2.5"]); + + const explicitlyVisibleProviders = buildProviderModelMenuProviders([withDefaults], { + presentationMode: "terminal", + hiddenModelsByAgent: { cursor: [] }, + }); + expect(explicitlyVisibleProviders[0]?.capabilities.models.map(({ id }) => id)).toEqual([ + "composer-2.5", + "gpt-5", + ]); + }); + it("exposes independently installed Cursor ACP and SDK model surfaces", () => { const guiCapabilities = { ...cursorStatus.capabilities, @@ -226,4 +250,42 @@ describe("buildProviderModelMenuProviders", () => { { label: "Cursor SDK", hiddenModelsKey: "cursor-sdk" }, ]); }); + + it("omits an installed Cursor SDK surface until its API key is authenticated", () => { + const guiCapabilities = { + ...cursorStatus.capabilities, + presentationMode: "gui" as const, + presentationModes: ["gui" as const], + liveInputMode: "server" as const, + }; + const providers = expandAgentToVisibilityProviders({ + ...cursorStatus, + runtimeVariants: { + acp: { + presentationMode: "gui", + installed: true, + authState: "authenticated", + authUsesProviderLogin: true, + capabilities: { + ...guiCapabilities, + runtimeLabel: "ACP", + models: [{ id: "acp-model", label: "ACP Model" }], + }, + }, + sdk: { + presentationMode: "gui", + installed: true, + authState: "missing", + authUsesProviderLogin: false, + capabilities: { + ...guiCapabilities, + runtimeLabel: "SDK", + models: [{ id: "sdk-model", label: "SDK Model" }], + }, + }, + }, + }); + + expect(providers.map(({ label }) => label)).toEqual(["Cursor CLI", "Cursor ACP"]); + }); }); diff --git a/src/renderer/components/thread/buildModelPickerControls.tsx b/src/renderer/components/thread/buildModelPickerControls.tsx index 8a10c648..cd5f66fb 100644 --- a/src/renderer/components/thread/buildModelPickerControls.tsx +++ b/src/renderer/components/thread/buildModelPickerControls.tsx @@ -144,7 +144,12 @@ export function expandAgentToVisibilityProviders(agent: AgentStatus): ProviderMo const supported = agent.capabilities.presentationModes ?? [agent.capabilities.presentationMode]; const providers = supported.flatMap((presentationMode) => { const runtimeProviders = Object.entries(runtimeVariants) - .filter(([, runtime]) => runtime.installed && runtime.presentationMode === presentationMode) + .filter( + ([, runtime]) => + runtime.installed && + runtime.authState === "authenticated" && + runtime.presentationMode === presentationMode, + ) .map(([runtimeVariant]) => makeMenuProvider(agent, presentationMode, runtimeVariant)); return runtimeProviders.length > 0 ? runtimeProviders @@ -234,6 +239,8 @@ export function buildModelPickerControls(input: BuildModelPickerControlsInput): ...(lockedAgentKind ? { lockedAgentKind } : {}), ...(presentationMode ? { presentationMode } : {}), ...(isDisabled !== undefined ? { isDisabled } : {}), + // Rows mark Fast mode filled while it is on for this draft. + ...(fast === true ? { isFastEnabled: true } : {}), hideLabelOnWrap, tier: 5, onChange: onProviderModelChange, diff --git a/src/renderer/components/thread/threadDraftViewHelpers.test.ts b/src/renderer/components/thread/threadDraftViewHelpers.test.ts new file mode 100644 index 00000000..d3e6b263 --- /dev/null +++ b/src/renderer/components/thread/threadDraftViewHelpers.test.ts @@ -0,0 +1,101 @@ +// @vitest-environment node + +import { describe, expect, it } from "vitest"; +import type { AgentCapability, AgentStatus } from "@/shared/contracts"; +import { + resolveFastValue, + resolveProviderDraftConfig, + resolveThinkingValue, +} from "./threadDraftViewHelpers"; + +const capabilities = { + models: [ + { id: "fast-capable", label: "Fast Capable" }, + { id: "plain", label: "Plain" }, + ], + efforts: ["low", "high"], + modelEfforts: { "fast-capable": ["low", "high"], plain: ["high"] }, + fastModels: ["fast-capable"], + thinkingModels: [], + modes: ["agent"], + approvalPolicies: [], + sandboxModes: [], + supportsResume: true, + supportsDirectInput: true, + liveInputMode: "direct", + presentationMode: "gui", + settingDefs: [], +} as unknown as AgentCapability; + +function agentWith(overrides?: Partial): AgentStatus { + return { + kind: "test", + label: "Test", + installed: true, + authState: "authenticated", + capabilities: { ...capabilities, ...overrides }, + } as unknown as AgentStatus; +} + +describe("resolveProviderDraftConfig fast mode", () => { + it("turns Fast on for a supported model when nothing was saved", () => { + expect(resolveProviderDraftConfig(agentWith(), { model: "fast-capable" }).fast).toBe(true); + }); + + it("keeps Fast off when the saved draft explicitly disabled it", () => { + expect( + resolveProviderDraftConfig(agentWith(), { model: "fast-capable", fast: false }).fast, + ).toBe(false); + }); + + it("leaves Fast off for a model that does not support it", () => { + expect(resolveProviderDraftConfig(agentWith(), { model: "plain" }).fast).toBeUndefined(); + }); + + it("leaves Fast off when the account cannot use it", () => { + const gated = agentWith({ fastDisabledReason: "Fast requests are disabled for this account." }); + expect(resolveProviderDraftConfig(gated, { model: "fast-capable" }).fast).toBeUndefined(); + }); +}); + +describe("resolveFastValue", () => { + // AI helpers resolve `fast` through this helper, so its default stays opt-in + // and background work never spends fast requests on its own. + it("stays off without an explicit preference", () => { + expect(resolveFastValue(agentWith(), "fast-capable")).toBe(false); + }); + + it("honours an explicit preference for a supported model", () => { + expect(resolveFastValue(agentWith(), "fast-capable", true)).toBe(true); + }); + + it("refuses an explicit preference for an unsupported model", () => { + expect(resolveFastValue(agentWith(), "plain", true)).toBe(false); + }); +}); + +describe("resolveProviderDraftConfig thinking mode", () => { + const thinkingAgent = () => agentWith({ thinkingModels: ["plain"] }); + + it("turns Thinking on for a supported model when nothing was saved", () => { + expect(resolveProviderDraftConfig(thinkingAgent(), { model: "plain" }).thinking).toBe(true); + }); + + it("keeps Thinking off when the saved draft explicitly disabled it", () => { + expect( + resolveProviderDraftConfig(thinkingAgent(), { model: "plain", thinking: false }).thinking, + ).toBe(false); + }); + + it("leaves Thinking absent for a model that does not support it", () => { + expect( + resolveProviderDraftConfig(thinkingAgent(), { model: "fast-capable" }).thinking, + ).toBeUndefined(); + }); +}); + +describe("resolveThinkingValue", () => { + it("stays off without an explicit preference outside composer default resolution", () => { + expect(resolveThinkingValue(agentWith({ thinkingModels: ["plain"] }), "plain")).toBe(false); + }); +}); diff --git a/src/renderer/components/thread/threadDraftViewHelpers.ts b/src/renderer/components/thread/threadDraftViewHelpers.ts index 6624b238..8da2a523 100644 --- a/src/renderer/components/thread/threadDraftViewHelpers.ts +++ b/src/renderer/components/thread/threadDraftViewHelpers.ts @@ -168,8 +168,21 @@ export function resolveProviderDraftConfig( const nextModel = resolveModelValue(agent, normalizedPreferred?.model); const nextEffort = resolveEffortValue(agent, nextModel, normalizedPreferred?.effort); const nextContext = resolveContextSizeValue(agent, nextModel, normalizedPreferred?.contextSize); - const nextFast = resolveFastValue(agent, nextModel, normalizedPreferred?.fast); - const nextThinking = resolveThinkingValue(agent, nextModel, normalizedPreferred?.thinking); + const supportsFast = supportsUsableFastMode(agent.capabilities, nextModel); + // Fast mode is the composer's default for every model that can actually use + // it; only an explicitly saved `false` keeps it off. AI helpers (title/commit + // generation, schedules, PR automation) call `resolveFastValue` directly and + // keep their opt-in default, so background work doesn't silently spend fast + // requests. + const nextFast = resolveFastValue(agent, nextModel, normalizedPreferred?.fast ?? true); + // Thinking starts enabled for every model that offers the toggle. An + // explicitly saved `false` remains authoritative. + const nextThinking = resolveThinkingValue( + agent, + nextModel, + normalizedPreferred?.thinking ?? true, + ); + const supportsThinking = agent.capabilities.thinkingModels?.includes(nextModel) === true; const nextMode = resolveModeValue(agent, normalizedPreferred?.mode) as | "agent" | "plan" @@ -183,8 +196,8 @@ export function resolveProviderDraftConfig( model: nextModel, effort: nextEffort, ...(nextContext ? { contextSize: nextContext } : {}), - ...(nextFast ? { fast: nextFast } : {}), - ...(nextThinking ? { thinking: nextThinking } : {}), + ...(supportsFast ? { fast: nextFast } : {}), + ...(supportsThinking ? { thinking: nextThinking } : {}), mode: nextMode, approvalPolicy: nextApproval, ...(nextReviewer !== undefined ? { approvalsReviewer: nextReviewer } : {}), diff --git a/src/renderer/locales/de/messages.po b/src/renderer/locales/de/messages.po index e164d110..209127cf 100644 --- a/src/renderer/locales/de/messages.po +++ b/src/renderer/locales/de/messages.po @@ -233,7 +233,7 @@ msgstr "{0}-Grenze" msgid "{0} logged out." msgstr "{0} hat sich abgemeldet." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "{0} Modelle" @@ -559,13 +559,17 @@ msgstr "{usedLabel} Token" msgid "{visibleCount} of {totalCount} visible" msgstr "{visibleCount} von {totalCount} sichtbar" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk ist nicht installiert." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/pfad/zu/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/pfad/zu/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Konten" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "ACP-Agenten" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "ACP-Authentifizierung" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP installiert" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP nicht installiert" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP verwendet die Cursor-Agent-Anmeldung. Das SDK verwendet @cursor/sdk mit CURSOR_API_KEY." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP verwendet die Cursor-Agent-Anmeldung. Das SDK verwendet @cursor/sdk mit CURSOR_API_KEY." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Eine andere Operation für dieses Experiment läuft noch." msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "API-Schlüssel" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "API-Schlüssel erforderlich" @@ -1336,6 +1347,10 @@ msgstr "Audio" msgid "Authenticate" msgstr "Authentifizieren" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Authentifiziert" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Authentifizierung" @@ -1349,6 +1364,10 @@ msgstr "Authentifizierung erforderlich" msgid "Authentication setup cannot be imported" msgstr "Die Authentifizierungskonfiguration kann nicht importiert werden" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Authentifizierung nicht verfügbar" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "Erstellt" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Automatisches Aktualisierungsintervall in Minuten, 0 zum Ausschalten" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Automatische Überprüfung" @@ -2017,6 +2037,10 @@ msgstr "SSH-Identitätsdatei auswählen" msgid "Choose the display language for Poracode's interface." msgstr "Wählen Sie die Anzeigesprache für die Benutzeroberfläche von Poracode." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Wähle die Laufzeit für neue Cursor-GUI-Chats. Das SDK wird verfügbar, nachdem sein Paket erkannt und sein API-Schlüssel authentifiziert wurde." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Wählen Sie die strukturierte Laufzeit für neue Cursor-GUI-Threads. Laufende Threads behalten ihre aktuelle Laufzeit." @@ -2716,7 +2740,6 @@ msgstr "Enthält vertrauliche Werte; manuell hinzufügen" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Kontext" @@ -3184,6 +3207,7 @@ msgstr "Gekrönt" #~ msgstr "Kuratierte kostenlose und Premium-Skills, verwaltet von MCP Market." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Aktuell" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Cursor-GUI-Laufzeit aktualisiert." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Cursor-ACP-Authentifizierung aktualisiert." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Von Cursor ACP abgemeldet." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Cursor-GUI-Laufzeit aktualisiert." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (externes Paket)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Cursor-SDK-API-Schlüssel" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Cursor-SDK-API-Schlüssel entfernt." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Cursor-SDK-API-Schlüssel gespeichert." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Das Cursor SDK ist auf dem neuesten Stand." @@ -3280,7 +3336,6 @@ msgstr "Ablehnen" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "Standard" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Geben Sie ein gültiges SSH-Ziel und einen gültigen Port ein." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "Geben Sie einen absoluten Pfad zum @cursor/sdk-Paket ein oder lassen Sie dieses Feld für die automatische Erkennung leer." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "Geben Sie einen absoluten Pfad zum @cursor/sdk-Paket ein oder lassen Sie dieses Feld für die automatische Erkennung leer." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "Ziel konnte nicht aktualisiert werden" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Schnell" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Schnellmodus" @@ -5153,6 +5208,7 @@ msgstr "installieren" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "Installieren Sie {0}." msgid "Install {env}" msgstr "Installieren Sie {env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "Installiere @cursor/sdk, um den API-Schlüssel zu konfigurieren." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "ACP + SDK installieren" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "ACP + SDK in {environment} installieren" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "Installieren Sie ACP, SDK oder beides und wählen Sie dann aus, welche Laufzeit neue Cursor-GUI-Chats startet. Bestehende Chats bleiben an die Laufzeit gebunden, die sie erstellt hat." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "Installieren Sie ACP, SDK oder beides und wählen Sie dann aus, welche Laufzeit neue Cursor-GUI-Chats startet. Bestehende Chats bleiben an die Laufzeit gebunden, die sie erstellt hat." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Cursor Agent (ACP) in {environment} installieren" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Cursor SDK installieren" @@ -5243,6 +5304,10 @@ msgstr "Tailscale installieren" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "Installiere Tailscale, um HTTPS-Zugriff über MagicDNS zu aktivieren." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "Installiere das Paket, um seinen API-Schlüssel hinzuzufügen." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "Modell zu Favoriten hinzugefügt" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Modellsteuerungen" +#~ msgid "Model controls" +#~ msgstr "Modellsteuerungen" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "Überschreibt {conflict}" msgid "Overriding the global setting for this project." msgstr "Überschreiben der globalen Einstellung für dieses Projekt." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Paket" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Paketkonfiguration" @@ -7489,6 +7558,10 @@ msgstr "{label} API-Schlüssel einfügen" msgid "Paste <0>{0} here. Click to copy." msgstr "Fügen Sie hier <0>{0} ein. Zum Kopieren klicken." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Cursor-API-Schlüssel einfügen" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Fügen Sie entweder ein benanntes Serverobjekt oder ein in einen mcpServers-Schlüssel eingebettetes Objekt ein." @@ -7572,6 +7645,10 @@ msgstr "Element auswählen" msgid "Pick icon" msgstr "Symbol auswählen" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Wähle die Laufzeit für neue Cursor-GUI-Chats. Jede Laufzeit wird eigenständig installiert und authentifiziert; offene Chats behalten die Laufzeit, mit der sie gestartet wurden." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "Auswahl fehlgeschlagen" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Bereit. Aktiviere dies, um die Tailscale-HTTPS-URL in neuen Pairing-Codes bekanntzugeben." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Begründung" @@ -8346,6 +8422,10 @@ msgstr "Claude-Profil entfernen" msgid "Remove connection" msgstr "Verbindung entfernen" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Cursor-SDK-API-Schlüssel entfernen" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Umgebungsvariable entfernen" @@ -8869,6 +8949,10 @@ msgstr "Läuft früh aus" msgid "Runs out in {runOut}" msgstr "Läuft in {runOut} aus" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Wird über die Cursor-CLI ausgeführt. Installieren und aktualisieren Sie sie und melden Sie sich über die Umgebungszeilen oben an." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "Laufzeitoptionen" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Claude-Profil speichern" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Cursor-GUI-Laufzeit speichern" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Cursor-GUI-Laufzeit speichern" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Cursor-SDK-API-Schlüssel speichern" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "MCP-Server speichern" msgid "Save shortcut" msgstr "Tastenkürzel speichern" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Gespeicherter API-Schlüssel" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "Gespeicherte Anmeldeinformationen werden in allen Umgebungen gemeinsam genutzt." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "Nach unten scrollen" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "SDK-Authentifizierung" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK installiert" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "Der SDK-Modus erfordert ein separat installiertes @cursor/sdk-Paket und CURSOR_API_KEY. Er verwendet nicht die Anmeldung der Cursor Agent CLI." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "Der SDK-Modus erfordert ein separat installiertes @cursor/sdk-Paket und CURSOR_API_KEY. Er verwendet nicht die Anmeldung der Cursor Agent CLI." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK nicht installiert" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "SDK-Paketpfad" +#~ msgid "SDK package path" +#~ msgstr "SDK-Paketpfad" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "SDK-Paketpfad (optional)" +#~ msgid "SDK package path (optional)" +#~ msgstr "SDK-Paketpfad (optional)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "Unterstützung:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Unterstützt Schnellmodus" @@ -10492,7 +10589,6 @@ msgstr "Diese integrierten MCP-Server werden von OpenCode-Threads gemeinsam genu #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Denkt …" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "Aktualisierung" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "Aktualisieren" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "Im Entwicklungsmodus kann nicht nach Updates gesucht werden." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Cursor SDK aktualisieren" diff --git a/src/renderer/locales/en/messages.po b/src/renderer/locales/en/messages.po index 7061abc2..acc6ae91 100644 --- a/src/renderer/locales/en/messages.po +++ b/src/renderer/locales/en/messages.po @@ -233,7 +233,7 @@ msgstr "{0} limit" msgid "{0} logged out." msgstr "{0} logged out." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "{0} models" @@ -559,13 +559,17 @@ msgstr "{usedLabel} tokens" msgid "{visibleCount} of {totalCount} visible" msgstr "{visibleCount} of {totalCount} visible" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk is not installed." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/path/to/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/path/to/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Accounts" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "ACP Agents" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "ACP authentication" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP installed" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP not installed" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Another operation for this experiment is still running." msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "API key" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "API key required" @@ -1336,6 +1347,10 @@ msgstr "Audio" msgid "Authenticate" msgstr "Authenticate" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Authenticated" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Authentication" @@ -1349,6 +1364,10 @@ msgstr "Authentication required" msgid "Authentication setup cannot be imported" msgstr "Authentication setup cannot be imported" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Authentication unavailable" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "Authored" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Auto-refresh interval in minutes, 0 to turn off" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Auto-review" @@ -2017,6 +2037,10 @@ msgstr "Choose SSH identity file" msgid "Choose the display language for Poracode's interface." msgstr "Choose the display language for Poracode's interface." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." @@ -2716,7 +2740,6 @@ msgstr "Contains sensitive values; add manually" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Context" @@ -3184,6 +3207,7 @@ msgstr "Crowned" #~ msgstr "Curated free and premium skills managed by MCP Market." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Current" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Cursor GUI runtime updated." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Cursor ACP authentication refreshed." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Cursor ACP logged out." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Cursor GUI runtime updated." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (external package)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Cursor SDK API key" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Cursor SDK API key removed." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Cursor SDK API key saved." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Cursor SDK is up to date." @@ -3280,7 +3336,6 @@ msgstr "Decline" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "Default" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Enter a valid SSH target and port." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "Failed to update goal" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Fast" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Fast mode" @@ -5153,6 +5208,7 @@ msgstr "install" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "Install {0}." msgid "Install {env}" msgstr "Install {env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "Install @cursor/sdk to configure its API key." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "Install ACP + SDK" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "Install ACP + SDK in {environment}" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Install Cursor Agent (ACP) in {environment}" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Install Cursor SDK" @@ -5243,6 +5304,10 @@ msgstr "Install Tailscale" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "Install Tailscale to enable HTTPS access through MagicDNS." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "Install the package to add its API key." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "Model added to favorites" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Model controls" +#~ msgid "Model controls" +#~ msgstr "Model controls" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "Overrides {conflict}" msgid "Overriding the global setting for this project." msgstr "Overriding the global setting for this project." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Package" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Package config" @@ -7489,6 +7558,10 @@ msgstr "Paste {label} API key" msgid "Paste <0>{0} here. Click to copy." msgstr "Paste <0>{0} here. Click to copy." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Paste Cursor API key" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Paste either a named server object or an object wrapped in an mcpServers key." @@ -7572,6 +7645,10 @@ msgstr "Pick element" msgid "Pick icon" msgstr "Pick icon" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "Picker failed" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing codes." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Reasoning" @@ -8346,6 +8422,10 @@ msgstr "Remove Claude profile" msgid "Remove connection" msgstr "Remove connection" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Remove Cursor SDK API key" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Remove environment variable" @@ -8869,6 +8949,10 @@ msgstr "Runs out early" msgid "Runs out in {runOut}" msgstr "Runs out in {runOut}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "Runtime options" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Save Claude profile" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Save Cursor GUI runtime" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Save Cursor GUI runtime" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Save Cursor SDK API key" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "Save MCP servers" msgid "Save shortcut" msgstr "Save shortcut" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Saved API key" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "Saved credentials are shared across all environments." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "Scroll to bottom" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "SDK authentication" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK installed" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK not installed" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "SDK package path" +#~ msgid "SDK package path" +#~ msgstr "SDK package path" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "SDK package path (optional)" +#~ msgid "SDK package path (optional)" +#~ msgstr "SDK package path (optional)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "Support:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Supports Fast mode" @@ -10492,7 +10589,6 @@ msgstr "These built-in MCP servers are shared by OpenCode threads. Saving update #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Thinking" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "update" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "Update" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "Update checks are not available in development mode." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Update Cursor SDK" diff --git a/src/renderer/locales/es/messages.po b/src/renderer/locales/es/messages.po index 632171dd..dfee12e8 100644 --- a/src/renderer/locales/es/messages.po +++ b/src/renderer/locales/es/messages.po @@ -233,7 +233,7 @@ msgstr "Límite de {0}" msgid "{0} logged out." msgstr "Sesión de {0} cerrada." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "{0} modelos" @@ -559,13 +559,17 @@ msgstr "{usedLabel} tokens" msgid "{visibleCount} of {totalCount} visible" msgstr "{visibleCount} de {totalCount} visibles" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk no está instalado." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/ruta/a/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/ruta/a/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Cuentas" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "Agentes ACP" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "Autenticación de ACP" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP instalado" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP no instalado" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP usa el inicio de sesión de Cursor Agent. El SDK usa @cursor/sdk con CURSOR_API_KEY." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP usa el inicio de sesión de Cursor Agent. El SDK usa @cursor/sdk con CURSOR_API_KEY." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Otra operación de este experimento todavía está en curso." msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "Clave API" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "Se requiere una clave de API" @@ -1336,6 +1347,10 @@ msgstr "Audio" msgid "Authenticate" msgstr "Autenticar" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Autenticado" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Autenticación" @@ -1349,6 +1364,10 @@ msgstr "Autenticación requerida" msgid "Authentication setup cannot be imported" msgstr "La configuración de autenticación no se puede importar" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Autenticación no disponible" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "Creadas" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Intervalo de actualización automática en minutos, 0 para desactivar" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Revisión automática" @@ -2017,6 +2037,10 @@ msgstr "Elegir archivo de identidad SSH" msgid "Choose the display language for Poracode's interface." msgstr "Elige el idioma de visualización de la interfaz de Poracode." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Elige el entorno de ejecución para los nuevos chats de la GUI de Cursor. El SDK estará disponible cuando se detecte su paquete y se autentique su clave de API." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Elige el entorno de ejecución estructurado para los nuevos hilos de la GUI de Cursor. Los hilos en ejecución conservan su entorno actual." @@ -2716,7 +2740,6 @@ msgstr "Contiene valores confidenciales; añádelo manualmente" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Contexto" @@ -3184,6 +3207,7 @@ msgstr "Coronado" #~ msgstr "Skills gratuitas y premium seleccionadas y gestionadas por MCP Market." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Recientes" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Entorno de ejecución de la GUI de Cursor actualizado." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Se actualizó la autenticación de Cursor ACP." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Se cerró la sesión de Cursor ACP." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Entorno de ejecución de la GUI de Cursor actualizado." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (paquete externo)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Clave de API del SDK de Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Se eliminó la clave de API del SDK de Cursor." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Se guardó la clave de API del SDK de Cursor." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "El SDK de Cursor está actualizado." @@ -3280,7 +3336,6 @@ msgstr "Rechazar" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "Predeterminado" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Introduce un destino SSH y un puerto válidos." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "Introduce una ruta absoluta al paquete @cursor/sdk o deja este campo en blanco para la detección automática." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "Introduce una ruta absoluta al paquete @cursor/sdk o deja este campo en blanco para la detección automática." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "No se pudo actualizar el objetivo" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Rápido" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Modo rápido" @@ -5153,6 +5208,7 @@ msgstr "instalación" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "Instalar {0}." msgid "Install {env}" msgstr "Instalar {env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "Instala @cursor/sdk para configurar su clave de API." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "Instalar ACP + SDK" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "Instalar ACP + SDK en {environment}" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "Instala ACP, SDK o ambos y luego elige qué entorno de ejecución inicia los nuevos chats de la interfaz de Cursor. Los chats existentes permanecen vinculados al entorno que los creó." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "Instala ACP, SDK o ambos y luego elige qué entorno de ejecución inicia los nuevos chats de la interfaz de Cursor. Los chats existentes permanecen vinculados al entorno que los creó." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Instalar Cursor Agent (ACP) en {environment}" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Instalar Cursor SDK" @@ -5243,6 +5304,10 @@ msgstr "Instalar Tailscale" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "Instala Tailscale para habilitar el acceso HTTPS a través de MagicDNS." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "Instala el paquete para añadir su clave API." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "Modelo agregado a favoritos" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Controles del modelo" +#~ msgid "Model controls" +#~ msgstr "Controles del modelo" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "Reemplaza {conflict}" msgid "Overriding the global setting for this project." msgstr "Anulando el ajuste global para este proyecto." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Paquete" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Configuración del paquete" @@ -7489,6 +7558,10 @@ msgstr "Pega la clave API de {label}" msgid "Paste <0>{0} here. Click to copy." msgstr "Pega <0>{0} aquí. Haz clic para copiar." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Pega la clave de API de Cursor" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Pega un objeto de servidor con nombre o un objeto encapsulado en una clave mcpServers." @@ -7572,6 +7645,10 @@ msgstr "Elegir elemento" msgid "Pick icon" msgstr "Elegir icono" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Elige el runtime que respalda los nuevos chats de la GUI de Cursor. Cada runtime se instala y se autentica por separado; los chats abiertos conservan el runtime con el que se iniciaron." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "El selector falló" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Listo. Actívalo para anunciar la URL HTTPS de Tailscale en los nuevos códigos de emparejamiento." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Razonamiento" @@ -8346,6 +8422,10 @@ msgstr "Eliminar perfil de Claude" msgid "Remove connection" msgstr "Eliminar conexión" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Eliminar la clave de API del SDK de Cursor" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Eliminar variable de entorno" @@ -8869,6 +8949,10 @@ msgstr "Se agota antes" msgid "Runs out in {runOut}" msgstr "Se agota en {runOut}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Se ejecuta mediante la CLI de Cursor. Instálala, actualízala e inicia sesión desde las filas de entorno anteriores." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "Opciones de runtime" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Guardar perfil de Claude" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Guardar el entorno de ejecución de la GUI de Cursor" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Guardar el entorno de ejecución de la GUI de Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Guardar la clave de API del SDK de Cursor" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "Guardar servidores MCP" msgid "Save shortcut" msgstr "Guardar atajo" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Clave de API guardada" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "Las credenciales guardadas se comparten entre todos los entornos." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "Desplazar al final" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "Autenticación del SDK" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK instalado" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "El modo SDK requiere un paquete @cursor/sdk instalado por separado y CURSOR_API_KEY. No usa el inicio de sesión de la CLI de Cursor Agent." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "El modo SDK requiere un paquete @cursor/sdk instalado por separado y CURSOR_API_KEY. No usa el inicio de sesión de la CLI de Cursor Agent." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK no instalado" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "Ruta del paquete SDK" +#~ msgid "SDK package path" +#~ msgstr "Ruta del paquete SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "Ruta del paquete SDK (opcional)" +#~ msgid "SDK package path (optional)" +#~ msgstr "Ruta del paquete SDK (opcional)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "Soporte:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Compatible con el modo rápido" @@ -10492,7 +10589,6 @@ msgstr "Estos servidores MCP integrados se comparten entre los hilos de OpenCode #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Pensando" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "actualización" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "Actualizar" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "Las comprobaciones de actualizaciones no están disponibles en el modo de desarrollo." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Actualizar el SDK de Cursor" diff --git a/src/renderer/locales/fr/messages.po b/src/renderer/locales/fr/messages.po index 2d0f37a5..92f85f5e 100644 --- a/src/renderer/locales/fr/messages.po +++ b/src/renderer/locales/fr/messages.po @@ -233,7 +233,7 @@ msgstr "limite {0}" msgid "{0} logged out." msgstr "{0} s'est déconnecté." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "{0} modèles" @@ -559,13 +559,17 @@ msgstr "{usedLabel} jetons" msgid "{visibleCount} of {totalCount} visible" msgstr "{visibleCount} sur {totalCount} visibles" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk n'est pas installé." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/chemin/vers/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/chemin/vers/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Comptes" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "Agents ACP" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "Authentification ACP" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP installé" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP non installé" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP utilise la connexion Cursor Agent. Le SDK utilise @cursor/sdk avec CURSOR_API_KEY." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP utilise la connexion Cursor Agent. Le SDK utilise @cursor/sdk avec CURSOR_API_KEY." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Une autre opération pour cette expérience est toujours en cours." msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "Clé API" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "Clé API requise" @@ -1336,6 +1347,10 @@ msgstr "Audio" msgid "Authenticate" msgstr "S'authentifier" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Authentifié" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Authentification" @@ -1349,6 +1364,10 @@ msgstr "Authentification requise" msgid "Authentication setup cannot be imported" msgstr "La configuration de l’authentification ne peut pas être importée" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Authentification indisponible" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "Créées" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Intervalle de rafraîchissement automatique en minutes, 0 pour désactiver" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Révision automatique" @@ -2017,6 +2037,10 @@ msgstr "Choisir le fichier d’identité SSH" msgid "Choose the display language for Poracode's interface." msgstr "Choisissez la langue d'affichage de l'interface de Poracode." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Choisissez l’environnement d’exécution pour les nouvelles discussions Cursor en interface graphique. Le SDK devient disponible lorsque son paquet est détecté et que sa clé API est authentifiée." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Choisissez l’environnement d’exécution structuré des nouveaux fils de l’interface Cursor. Les fils en cours conservent leur environnement actuel." @@ -2716,7 +2740,6 @@ msgstr "Contient des valeurs sensibles ; ajoutez-le manuellement" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Contexte" @@ -3184,6 +3207,7 @@ msgstr "Couronné" #~ msgstr "Skills gratuites et premium sélectionnées et gérées par MCP Market." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Récent" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Environnement d’exécution de l’interface Cursor mis à jour." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Authentification Cursor ACP actualisée." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Déconnexion de Cursor ACP effectuée." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Environnement d’exécution de l’interface Cursor mis à jour." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (package externe)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Clé API du SDK Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Clé API du SDK Cursor supprimée." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Clé API du SDK Cursor enregistrée." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Le SDK Cursor est à jour." @@ -3280,7 +3336,6 @@ msgstr "Refuser" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "Par défaut" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Saisissez une cible SSH et un port valides." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "Saisissez un chemin absolu vers le package @cursor/sdk ou laissez ce champ vide pour la détection automatique." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "Saisissez un chemin absolu vers le package @cursor/sdk ou laissez ce champ vide pour la détection automatique." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "Impossible de mettre à jour l'objectif" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Rapide" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Mode rapide" @@ -5153,6 +5208,7 @@ msgstr "installer" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "Installez {0}." msgid "Install {env}" msgstr "Installer {env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "Installez @cursor/sdk pour configurer sa clé API." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "Installer ACP + SDK" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "Installer ACP + SDK dans {environment}" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "Installez ACP, le SDK ou les deux, puis choisissez l’environnement d’exécution qui lance les nouveaux chats de l’interface Cursor. Les chats existants restent associés à l’environnement qui les a créés." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "Installez ACP, le SDK ou les deux, puis choisissez l’environnement d’exécution qui lance les nouveaux chats de l’interface Cursor. Les chats existants restent associés à l’environnement qui les a créés." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Installer Cursor Agent (ACP) dans {environment}" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Installer le SDK Cursor" @@ -5243,6 +5304,10 @@ msgstr "Installer Tailscale" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "Installez Tailscale pour activer l’accès HTTPS via MagicDNS." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "Installez le paquet pour ajouter sa clé API." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6090,8 +6155,8 @@ msgid "Model added to favorites" msgstr "Modèle ajouté aux favoris" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Contrôles du modèle" +#~ msgid "Model controls" +#~ msgstr "Contrôles du modèle" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7370,6 +7435,10 @@ msgstr "Remplace {conflict}" msgid "Overriding the global setting for this project." msgstr "Remplacement du paramètre global pour ce projet." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Paquet" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Configuration du paquet" @@ -7488,6 +7557,10 @@ msgstr "Collez la clé API {label}" msgid "Paste <0>{0} here. Click to copy." msgstr "Collez <0>{0} ici. Cliquez pour copier." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Collez la clé API Cursor" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Collez soit un objet serveur nommé, soit un objet encapsulé dans une clé mcpServers." @@ -7571,6 +7644,10 @@ msgstr "Choisir un élément" msgid "Pick icon" msgstr "Choisir une icône" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Choisissez la durée d'exécution qui alimente les nouveaux chats GUI Cursor. Chaque durée d'exécution s'installe et s'authentifie séparément ; les chats ouverts conservent celle avec laquelle ils ont démarré." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "Échec du sélecteur" @@ -8128,7 +8205,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Prêt. Activez cette option pour annoncer l’URL HTTPS Tailscale dans les nouveaux codes d’appairage." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Raisonnement" @@ -8345,6 +8421,10 @@ msgstr "Supprimer le profil de Claude" msgid "Remove connection" msgstr "Supprimer la connexion" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Supprimer la clé API du SDK Cursor" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Supprimer la variable d'environnement" @@ -8868,6 +8948,10 @@ msgstr "S'épuise tôt" msgid "Runs out in {runOut}" msgstr "S'épuise dans {runOut}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "S’exécute via la CLI Cursor. Installez-la, mettez-la à jour et connectez-vous depuis les lignes d’environnement ci-dessus." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8889,7 +8973,6 @@ msgstr "Options d'exécution" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8909,8 +8992,12 @@ msgid "Save Claude profile" msgstr "Enregistrer le profil de Claude" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Enregistrer l’environnement d’exécution de l’interface Cursor" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Enregistrer l’environnement d’exécution de l’interface Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Enregistrer la clé API du SDK Cursor" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8924,6 +9011,10 @@ msgstr "Enregistrer les serveurs MCP" msgid "Save shortcut" msgstr "Enregistrer le raccourci" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Clé API enregistrée" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "Les informations d'identification enregistrées sont partagées dans tous les environnements." @@ -9005,28 +9096,32 @@ msgid "Scroll to bottom" msgstr "Faire défiler vers le bas" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "Authentification du SDK" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK installé" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "Le mode SDK nécessite un package @cursor/sdk installé séparément et CURSOR_API_KEY. Il n’utilise pas la connexion de la CLI Cursor Agent." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "Le mode SDK nécessite un package @cursor/sdk installé séparément et CURSOR_API_KEY. Il n’utilise pas la connexion de la CLI Cursor Agent." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK non installé" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "Chemin du package SDK" +#~ msgid "SDK package path" +#~ msgstr "Chemin du package SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "Chemin du package SDK (facultatif)" +#~ msgid "SDK package path (optional)" +#~ msgstr "Chemin du package SDK (facultatif)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10063,6 +10158,8 @@ msgid "Support:" msgstr "Prise en charge :" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Compatible avec le mode rapide" @@ -10491,7 +10588,6 @@ msgstr "Ces serveurs MCP intégrés sont partagés entre les fils OpenCode. L'en #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Réflexion" @@ -11265,6 +11361,7 @@ msgid "update" msgstr "mise à jour" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "Mise à jour" @@ -11287,6 +11384,7 @@ msgid "Update checks are not available in development mode." msgstr "La recherche de mises à jour n’est pas disponible en mode développement." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Mettre à jour le SDK Cursor" diff --git a/src/renderer/locales/ja/messages.po b/src/renderer/locales/ja/messages.po index 488f804c..18359f49 100644 --- a/src/renderer/locales/ja/messages.po +++ b/src/renderer/locales/ja/messages.po @@ -233,7 +233,7 @@ msgstr "{0}制限" msgid "{0} logged out." msgstr "{0}がログアウトしました。" -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "{0} 個のモデル" @@ -558,13 +558,17 @@ msgstr "{usedLabel}トークン" msgid "{visibleCount} of {totalCount} visible" msgstr "{visibleCount}/{totalCount}が表示されます" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk はインストールされていません。" + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/パス/先/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/パス/先/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -674,7 +678,6 @@ msgstr "アカウント" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -686,6 +689,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "ACPエージェント" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "ACP 認証" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP インストール済み" @@ -695,8 +702,8 @@ msgid "ACP not installed" msgstr "ACP 未インストール" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP は Cursor Agent のログインを使用します。SDK は CURSOR_API_KEY と @cursor/sdk を使用します。" +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP は Cursor Agent のログインを使用します。SDK は CURSOR_API_KEY と @cursor/sdk を使用します。" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1168,6 +1175,10 @@ msgstr "この実験の別の操作がまだ実行中です。" msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "APIキー" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "API キーが必要です" @@ -1335,6 +1346,10 @@ msgstr "オーディオ" msgid "Authenticate" msgstr "認証" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "認証済み" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "認証" @@ -1348,6 +1363,10 @@ msgstr "認証が必要です" msgid "Authentication setup cannot be imported" msgstr "認証設定はインポートできません" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "認証を利用できません" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "自分が作成" @@ -1412,6 +1431,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "自動更新間隔 (分単位)、オフにする場合は 0" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "自動レビュー" @@ -2016,6 +2036,10 @@ msgstr "SSH 秘密鍵ファイルを選択" msgid "Choose the display language for Poracode's interface." msgstr "Poracode のインターフェースの表示言語を選択します。" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "新しい Cursor GUI チャットで使用するランタイムを選択します。SDK は、パッケージが検出され API キーが認証されると利用可能になります。" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "新しい Cursor GUI スレッドで使用する構造化ランタイムを選択します。実行中のスレッドでは現在のランタイムが維持されます。" @@ -2715,7 +2739,6 @@ msgstr "機密値が含まれています。手動で追加してください" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "コンテキスト" @@ -3183,6 +3206,7 @@ msgstr "選定済み" #~ msgstr "MCP Market が管理する厳選された無料およびプレミアムスキル。" #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "最近" @@ -3203,13 +3227,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Cursor GUI ランタイムを更新しました。" +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Cursor ACP の認証状態を更新しました。" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Cursor ACP からログアウトしました。" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Cursor GUI ランタイムを更新しました。" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK(外部パッケージ)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Cursor SDK API キー" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Cursor SDK API キーを削除しました。" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Cursor SDK API キーを保存しました。" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Cursor SDK は最新です。" @@ -3279,7 +3335,6 @@ msgstr "辞退" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "デフォルト" @@ -3969,8 +4024,8 @@ msgid "Enter a valid SSH target and port." msgstr "有効な SSH 接続先とポートを入力してください。" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "@cursor/sdk パッケージへの絶対パスを入力するか、空欄にして自動検出を使用します。" +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "@cursor/sdk パッケージへの絶対パスを入力するか、空欄にして自動検出を使用します。" #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4288,10 +4343,10 @@ msgstr "目標を更新できませんでした" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "速い" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "高速モード" @@ -5152,6 +5207,7 @@ msgstr "インストールする" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5176,6 +5232,10 @@ msgstr "{0}をインストールします。" msgid "Install {env}" msgstr "{env}をインストールする" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "API キーを設定するには @cursor/sdk をインストールしてください。" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "ACP + SDK をインストール" @@ -5185,8 +5245,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "{environment} に ACP + SDK をインストール" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "ACP、SDK、または両方をインストールし、新しい Cursor GUI チャットを開始するランタイムを選択します。既存のチャットは作成元のランタイムに固定されます。" +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "ACP、SDK、または両方をインストールし、新しい Cursor GUI チャットを開始するランタイムを選択します。既存のチャットは作成元のランタイムに固定されます。" #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5201,6 +5261,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "{environment} に Cursor Agent(ACP)をインストール" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Cursor SDK をインストール" @@ -5242,6 +5303,10 @@ msgstr "Tailscaleをインストール" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "MagicDNS 経由の HTTPS アクセスを有効にするには Tailscale をインストールしてください。" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "パッケージをインストールしてAPIキーを追加してください。" + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6089,8 +6154,8 @@ msgid "Model added to favorites" msgstr "モデルをお気に入りに追加しました" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "モデルコントロール" +#~ msgid "Model controls" +#~ msgstr "モデルコントロール" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7369,6 +7434,10 @@ msgstr "{conflict} を上書き" msgid "Overriding the global setting for this project." msgstr "このプロジェクトのグローバル設定をオーバーライドします。" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "パッケージ" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "パッケージ構成" @@ -7487,6 +7556,10 @@ msgstr "{label} APIキーを貼り付け" msgid "Paste <0>{0} here. Click to copy." msgstr "<0>{0} をここに貼り付けます。クリックしてコピーします。" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Cursor API キーを貼り付け" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "名前付きサーバーオブジェクト、またはmcpServersキーでラップしたオブジェクトを貼り付けてください。" @@ -7570,6 +7643,10 @@ msgstr "要素を選択します" msgid "Pick icon" msgstr "アイコンを選択します" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "新しい Cursor GUI チャットで使用するランタイムを選択します。各ランタイムは個別にインストールおよび認証されます。開いているチャットは開始時のランタイムを維持します。" + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "ピッカーが失敗しました" @@ -8127,7 +8204,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "準備完了。オンにすると、新しいペアリングコードで Tailscale HTTPS URL が通知されます。" #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "推論" @@ -8344,6 +8420,10 @@ msgstr "Claude プロファイルを削除" msgid "Remove connection" msgstr "接続を削除" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Cursor SDK API キーを削除" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "環境変数を削除" @@ -8867,6 +8947,10 @@ msgstr "早めになくなります" msgid "Runs out in {runOut}" msgstr "あと{runOut}でなくなります" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Cursor CLI 経由で実行されます。上の環境行からインストール、更新、サインインを行ってください。" + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8888,7 +8972,6 @@ msgstr "実行時オプション" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8908,8 +8991,12 @@ msgid "Save Claude profile" msgstr "Claude プロフィールを保存" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Cursor GUI ランタイムを保存" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Cursor GUI ランタイムを保存" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Cursor SDK API キーを保存" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8923,6 +9010,10 @@ msgstr "MCPサーバーを保存" msgid "Save shortcut" msgstr "ショートカットを保存" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "保存済みの API キー" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "保存された認証情報はすべての環境で共有されます。" @@ -9004,28 +9095,32 @@ msgid "Scroll to bottom" msgstr "一番下までスクロール" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "SDK 認証" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK インストール済み" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "SDK モードには、別途インストールした @cursor/sdk パッケージと CURSOR_API_KEY が必要です。Cursor Agent CLI のログインは使用されません。" +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "SDK モードには、別途インストールした @cursor/sdk パッケージと CURSOR_API_KEY が必要です。Cursor Agent CLI のログインは使用されません。" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK 未インストール" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "SDK パッケージのパス" +#~ msgid "SDK package path" +#~ msgstr "SDK パッケージのパス" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "SDK パッケージのパス(任意)" +#~ msgid "SDK package path (optional)" +#~ msgstr "SDK パッケージのパス(任意)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10062,6 +10157,8 @@ msgid "Support:" msgstr "サポート:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "高速モードに対応" @@ -10490,7 +10587,6 @@ msgstr "これらの組み込みMCPサーバーはOpenCodeスレッド間で共 #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "思考中" @@ -11264,6 +11360,7 @@ msgid "update" msgstr "更新" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "アップデート" @@ -11286,6 +11383,7 @@ msgid "Update checks are not available in development mode." msgstr "開発モードではアップデートを確認できません。" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Cursor SDK を更新" diff --git a/src/renderer/locales/ko/messages.po b/src/renderer/locales/ko/messages.po index 2531e6d7..bcfe7d09 100644 --- a/src/renderer/locales/ko/messages.po +++ b/src/renderer/locales/ko/messages.po @@ -233,7 +233,7 @@ msgstr "{0} 한도" msgid "{0} logged out." msgstr "{0} 로그아웃되었습니다." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "모델 {0}개" @@ -559,13 +559,17 @@ msgstr "{usedLabel} 토큰" msgid "{visibleCount} of {totalCount} visible" msgstr "{totalCount}개 중 {visibleCount}개 표시" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk가 설치되지 않았습니다." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/경로/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/경로/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "계정" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "ACP 에이전트" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "ACP 인증" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP 설치됨" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP 설치되지 않음" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP는 Cursor Agent 로그인을 사용합니다. SDK는 CURSOR_API_KEY와 함께 @cursor/sdk를 사용합니다." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP는 Cursor Agent 로그인을 사용합니다. SDK는 CURSOR_API_KEY와 함께 @cursor/sdk를 사용합니다." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "이 실험에 대한 다른 작업이 아직 실행 중입니다." msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "API 키" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "API 키 필요" @@ -1336,6 +1347,10 @@ msgstr "오디오" msgid "Authenticate" msgstr "인증" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "인증됨" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "인증" @@ -1349,6 +1364,10 @@ msgstr "인증 필요" msgid "Authentication setup cannot be imported" msgstr "인증 설정은 가져올 수 없습니다" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "인증을 사용할 수 없음" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "내가 작성" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "자동 새로고침 간격(분), 0이면 끄기" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "자동 검토" @@ -2017,6 +2037,10 @@ msgstr "SSH ID 파일 선택" msgid "Choose the display language for Poracode's interface." msgstr "Poracode 인터페이스의 표시 언어를 선택하세요." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "새 Cursor GUI 채팅에 사용할 런타임을 선택하세요. SDK는 패키지가 감지되고 API 키가 인증되면 사용할 수 있습니다." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "새 Cursor GUI 스레드에 사용할 구조화 런타임을 선택하세요. 실행 중인 스레드는 현재 런타임을 유지합니다." @@ -2716,7 +2740,6 @@ msgstr "민감한 값이 포함되어 있습니다. 직접 추가하세요" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "컨텍스트" @@ -3184,6 +3207,7 @@ msgstr "선택됨" #~ msgstr "MCP Market에서 관리하는 엄선된 무료 및 프리미엄 스킬입니다." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "최근" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Cursor GUI 런타임을 업데이트했습니다." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Cursor ACP 인증을 새로 고쳤습니다." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Cursor ACP에서 로그아웃했습니다." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Cursor GUI 런타임을 업데이트했습니다." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK(외부 패키지)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Cursor SDK API 키" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Cursor SDK API 키를 제거했습니다." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Cursor SDK API 키를 저장했습니다." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Cursor SDK가 최신 상태입니다." @@ -3280,7 +3336,6 @@ msgstr "거절" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "기본값" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "올바른 SSH 대상과 포트를 입력하세요." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "@cursor/sdk 패키지의 절대 경로를 입력하거나 자동 검색을 사용하려면 비워 두세요." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "@cursor/sdk 패키지의 절대 경로를 입력하거나 자동 검색을 사용하려면 비워 두세요." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "목표를 업데이트하지 못했습니다" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "빠르게" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "고속 모드" @@ -5153,6 +5208,7 @@ msgstr "설치" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "{0}을(를) 설치합니다." msgid "Install {env}" msgstr "{env} 설치" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "API 키를 구성하려면 @cursor/sdk를 설치하세요." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "ACP + SDK 설치" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "{environment}에 ACP + SDK 설치" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "ACP, SDK 또는 둘 다 설치한 다음 새 Cursor GUI 채팅을 시작할 런타임을 선택하세요. 기존 채팅은 생성한 런타임에 계속 고정됩니다." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "ACP, SDK 또는 둘 다 설치한 다음 새 Cursor GUI 채팅을 시작할 런타임을 선택하세요. 기존 채팅은 생성한 런타임에 계속 고정됩니다." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "{environment}에 Cursor Agent(ACP) 설치" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Cursor SDK 설치" @@ -5243,6 +5304,10 @@ msgstr "Tailscale 설치" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "MagicDNS를 통한 HTTPS 액세스를 활성화하려면 Tailscale을 설치하세요." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "패키지를 설치한 후 API 키를 추가하세요." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "모델을 즐겨찾기에 추가함" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "모델 컨트롤" +#~ msgid "Model controls" +#~ msgstr "모델 컨트롤" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "{conflict} 재정의" msgid "Overriding the global setting for this project." msgstr "이 프로젝트의 전역 설정을 재정의합니다." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "패키지" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "패키지 구성" @@ -7489,6 +7558,10 @@ msgstr "{label} API 키 붙여넣기" msgid "Paste <0>{0} here. Click to copy." msgstr "여기에 <0>{0}을 붙여넣으세요. 복사하려면 클릭하세요." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Cursor API 키 붙여넣기" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "이름이 지정된 서버 객체 또는 mcpServers 키로 감싼 객체를 붙여넣으세요." @@ -7572,6 +7645,10 @@ msgstr "요소 선택" msgid "Pick icon" msgstr "아이콘 선택" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "새 Cursor GUI 채팅에 사용할 런타임을 선택하세요. 각 런타임은 개별적으로 설치되고 인증됩니다. 열려 있는 채팅은 시작할 때의 런타임을 유지합니다." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "선택기 실패" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "준비됨. 이 옵션을 켜면 새 페어링 코드에 Tailscale HTTPS URL이 광고됩니다." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "추론" @@ -8346,6 +8422,10 @@ msgstr "Claude 프로필 삭제" msgid "Remove connection" msgstr "연결 제거" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Cursor SDK API 키 제거" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "환경 변수 제거" @@ -8869,6 +8949,10 @@ msgstr "조기 소진" msgid "Runs out in {runOut}" msgstr "{runOut} 후 소진" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Cursor CLI를 통해 실행됩니다. 위의 환경 행에서 설치, 업데이트 및 로그인을 진행하세요." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "런타임 옵션" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Claude 프로필 저장" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Cursor GUI 런타임 저장" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Cursor GUI 런타임 저장" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Cursor SDK API 키 저장" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "MCP 서버 저장" msgid "Save shortcut" msgstr "단축키 저장" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "저장된 API 키" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "저장된 자격 증명은 모든 환경에서 공유됩니다." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "맨 아래로 스크롤" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "SDK 인증" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK 설치됨" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "SDK 모드에는 별도로 설치한 @cursor/sdk 패키지와 CURSOR_API_KEY가 필요합니다. Cursor Agent CLI 로그인을 사용하지 않습니다." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "SDK 모드에는 별도로 설치한 @cursor/sdk 패키지와 CURSOR_API_KEY가 필요합니다. Cursor Agent CLI 로그인을 사용하지 않습니다." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK 설치되지 않음" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "SDK 패키지 경로" +#~ msgid "SDK package path" +#~ msgstr "SDK 패키지 경로" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "SDK 패키지 경로(선택 사항)" +#~ msgid "SDK package path (optional)" +#~ msgstr "SDK 패키지 경로(선택 사항)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "지원:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "고속 모드 지원" @@ -10492,7 +10589,6 @@ msgstr "이 기본 제공 MCP 서버는 OpenCode 스레드 간에 공유됩니 #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "생각 중" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "업데이트" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "업데이트" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "개발 모드에서는 업데이트를 확인할 수 없습니다." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Cursor SDK 업데이트" diff --git a/src/renderer/locales/pl/messages.po b/src/renderer/locales/pl/messages.po index 0dc27ff0..008a9eab 100644 --- a/src/renderer/locales/pl/messages.po +++ b/src/renderer/locales/pl/messages.po @@ -233,7 +233,7 @@ msgstr "{0} – limit" msgid "{0} logged out." msgstr "{0} – wylogowano." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "Modele: {0}" @@ -559,13 +559,17 @@ msgstr "{usedLabel} tokenów" msgid "{visibleCount} of {totalCount} visible" msgstr "Widoczne {visibleCount} z {totalCount}" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk nie jest zainstalowany." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/ścieżka/do/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/ścieżka/do/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Konta" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "Agenci ACP" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "Uwierzytelnianie ACP" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP zainstalowane" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP niezainstalowane" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP używa logowania Cursor Agent. SDK używa @cursor/sdk z CURSOR_API_KEY." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP używa logowania Cursor Agent. SDK używa @cursor/sdk z CURSOR_API_KEY." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Inna operacja dla tego eksperymentu wciąż trwa." msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "Klucz API" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "Wymagany klucz API" @@ -1336,6 +1347,10 @@ msgstr "Dźwięk" msgid "Authenticate" msgstr "Uwierzytelnij" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Uwierzytelniono" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Uwierzytelnianie" @@ -1349,6 +1364,10 @@ msgstr "Wymagane uwierzytelnienie" msgid "Authentication setup cannot be imported" msgstr "Nie można zaimportować konfiguracji uwierzytelniania" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Uwierzytelnianie niedostępne" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "Utworzone przeze mnie" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Interwał automatycznego odświeżania w minutach, 0, aby wyłączyć" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Automatyczny przegląd" @@ -2017,6 +2037,10 @@ msgstr "Wybierz plik tożsamości SSH" msgid "Choose the display language for Poracode's interface." msgstr "Wybierz język wyświetlania interfejsu Poracode." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Wybierz środowisko uruchomieniowe dla nowych czatów GUI Cursor. SDK stanie się dostępne po wykryciu pakietu i uwierzytelnieniu klucza API." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Wybierz środowisko strukturalne dla nowych wątków GUI Cursor. Uruchomione wątki zachowają bieżące środowisko." @@ -2716,7 +2740,6 @@ msgstr "Zawiera poufne wartości; dodaj ręcznie" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Kontekst" @@ -3184,6 +3207,7 @@ msgstr "Wybrano zwycięzcę" #~ msgstr "Wyselekcjonowane bezpłatne i premium skille zarządzane przez MCP Market." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Bieżące" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Zaktualizowano środowisko GUI Cursor." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Odświeżono uwierzytelnianie Cursor ACP." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Wylogowano z Cursor ACP." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Zaktualizowano środowisko GUI Cursor." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (pakiet zewnętrzny)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Klucz API SDK Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Usunięto klucz API SDK Cursor." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Zapisano klucz API SDK Cursor." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Cursor SDK jest aktualny." @@ -3280,7 +3336,6 @@ msgstr "Odmów" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "Domyślne" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Wprowadź prawidłowy cel SSH i port." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "Wprowadź bezwzględną ścieżkę do pakietu @cursor/sdk lub pozostaw to pole puste, aby użyć automatycznego wykrywania." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "Wprowadź bezwzględną ścieżkę do pakietu @cursor/sdk lub pozostaw to pole puste, aby użyć automatycznego wykrywania." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "Nie udało się zaktualizować celu" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Szybki" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Tryb szybki" @@ -5153,6 +5208,7 @@ msgstr "zainstaluj" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "Zainstaluj {0}." msgid "Install {env}" msgstr "Zainstaluj {env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "Zainstaluj @cursor/sdk, aby skonfigurować klucz API." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "Zainstaluj ACP + SDK" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "Zainstaluj ACP + SDK w {environment}" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "Zainstaluj ACP, SDK lub oba, a następnie wybierz środowisko uruchomieniowe dla nowych czatów interfejsu Cursor. Istniejące czaty pozostaną przypisane do środowiska, które je utworzyło." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "Zainstaluj ACP, SDK lub oba, a następnie wybierz środowisko uruchomieniowe dla nowych czatów interfejsu Cursor. Istniejące czaty pozostaną przypisane do środowiska, które je utworzyło." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Zainstaluj Cursor Agent (ACP) w {environment}" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Zainstaluj Cursor SDK" @@ -5243,6 +5304,10 @@ msgstr "Zainstaluj Tailscale" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "Zainstaluj Tailscale, aby włączyć dostęp HTTPS przez MagicDNS." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "Zainstaluj pakiet, aby dodać jego klucz API." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "Model dodany do ulubionych" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Sterowanie modelem" +#~ msgid "Model controls" +#~ msgstr "Sterowanie modelem" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "Zastępuje {conflict}" msgid "Overriding the global setting for this project." msgstr "Zastępowanie ustawienia globalnego dla tego projektu." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Pakiet" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Konfiguracja pakietu" @@ -7489,6 +7558,10 @@ msgstr "Wklej klucz API {label}" msgid "Paste <0>{0} here. Click to copy." msgstr "Wklej tutaj <0>{0}. Kliknij, aby skopiować." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Wklej klucz API Cursor" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Wklej nazwany obiekt serwera albo obiekt opakowany w klucz mcpServers." @@ -7572,6 +7645,10 @@ msgstr "Wybierz element" msgid "Pick icon" msgstr "Wybierz ikonę" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Wybierz czas wykonania dla nowych czatów GUI Cursor. Każdy instaluje się i uwierzytelnia oddzielnie; otwarte czaty zachowują ten, z którym zostały uruchomione." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "Selektor nie powiódł się" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Gotowe. Włącz to, aby ogłaszać adres HTTPS Tailscale w nowych kodach parowania." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Rozumowanie" @@ -8346,6 +8422,10 @@ msgstr "Usuń profil Claude" msgid "Remove connection" msgstr "Usuń połączenie" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Usuń klucz API SDK Cursor" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Usuń zmienną środowiskową" @@ -8869,6 +8949,10 @@ msgstr "Wyczerpie się wcześnie" msgid "Runs out in {runOut}" msgstr "Wyczerpie się za {runOut}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Działa przez interfejs CLI Cursor. Zainstaluj go, zaktualizuj i zaloguj się w wierszach środowiska powyżej." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "Opcje środowiska wykonawczego" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Zapisz profil Claude'a" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Zapisz środowisko GUI Cursor" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Zapisz środowisko GUI Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Zapisz klucz API SDK Cursor" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "Zapisz serwery MCP" msgid "Save shortcut" msgstr "Zapisz skrót" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Zapisany klucz API" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "Zapisane poświadczenia są udostępniane we wszystkich środowiskach." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "Przewiń w dół" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "Uwierzytelnianie SDK" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK zainstalowane" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "Tryb SDK wymaga osobno zainstalowanego pakietu @cursor/sdk i zmiennej CURSOR_API_KEY. Nie używa logowania interfejsu CLI Cursor Agent." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "Tryb SDK wymaga osobno zainstalowanego pakietu @cursor/sdk i zmiennej CURSOR_API_KEY. Nie używa logowania interfejsu CLI Cursor Agent." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK niezainstalowane" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "Ścieżka pakietu SDK" +#~ msgid "SDK package path" +#~ msgstr "Ścieżka pakietu SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "Ścieżka pakietu SDK (opcjonalna)" +#~ msgid "SDK package path (optional)" +#~ msgstr "Ścieżka pakietu SDK (opcjonalna)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "Wsparcie:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Obsługuje tryb szybki" @@ -10492,7 +10589,6 @@ msgstr "Te wbudowane serwery MCP są współdzielone przez wątki OpenCode. Zapi #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Myślenie" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "aktualizacja" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "Aktualizacja" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "Sprawdzanie aktualizacji nie jest dostępne w trybie programistycznym." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Zaktualizuj Cursor SDK" diff --git a/src/renderer/locales/pt-BR/messages.po b/src/renderer/locales/pt-BR/messages.po index 0e08ca1c..3ae24c64 100644 --- a/src/renderer/locales/pt-BR/messages.po +++ b/src/renderer/locales/pt-BR/messages.po @@ -233,7 +233,7 @@ msgstr "Limite de {0}" msgid "{0} logged out." msgstr "{0} desconectado." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "{0} modelos" @@ -559,13 +559,17 @@ msgstr "{usedLabel} tokens" msgid "{visibleCount} of {totalCount} visible" msgstr "{visibleCount} de {totalCount} visíveis" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk não está instalado." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/caminho/para/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/caminho/para/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Contas" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "Agentes ACP" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "Autenticação do ACP" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP instalado" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP não instalado" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "O ACP usa o login do Cursor Agent. O SDK usa @cursor/sdk com CURSOR_API_KEY." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "O ACP usa o login do Cursor Agent. O SDK usa @cursor/sdk com CURSOR_API_KEY." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Outra operação deste experimento ainda está em andamento." msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "Chave de API" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "Chave de API necessária" @@ -1336,6 +1347,10 @@ msgstr "Áudio" msgid "Authenticate" msgstr "Autenticar" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Autenticado" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Autenticação" @@ -1349,6 +1364,10 @@ msgstr "Autenticação necessária" msgid "Authentication setup cannot be imported" msgstr "A configuração de autenticação não pode ser importada" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Autenticação indisponível" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "De sua autoria" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Intervalo de atualização automática em minutos, 0 para desligar" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Revisão automática" @@ -2017,6 +2037,10 @@ msgstr "Escolher arquivo de identidade SSH" msgid "Choose the display language for Poracode's interface." msgstr "Escolha o idioma de exibição da interface do Poracode." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Escolha o ambiente de execução para novos chats da interface do Cursor. O SDK fica disponível depois que o pacote é detectado e a chave de API é autenticada." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Escolha o runtime estruturado para novas threads da interface do Cursor. As threads em execução mantêm o runtime atual." @@ -2716,7 +2740,6 @@ msgstr "Contém valores confidenciais; adicione manualmente" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Contexto" @@ -3184,6 +3207,7 @@ msgstr "Coroado" #~ msgstr "Skills gratuitas e premium selecionadas e gerenciadas pelo MCP Market." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Recentes" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Runtime da interface do Cursor atualizado." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Autenticação do Cursor ACP atualizada." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Sessão do Cursor ACP encerrada." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Runtime da interface do Cursor atualizado." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (pacote externo)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Chave de API do SDK do Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Chave de API do SDK do Cursor removida." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Chave de API do SDK do Cursor salva." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "O SDK do Cursor está atualizado." @@ -3280,7 +3336,6 @@ msgstr "Recusar" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "Padrão" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Insira um destino SSH e uma porta válidos." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "Informe um caminho absoluto para o pacote @cursor/sdk ou deixe este campo em branco para a detecção automática." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "Informe um caminho absoluto para o pacote @cursor/sdk ou deixe este campo em branco para a detecção automática." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "Não foi possível atualizar o objetivo" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Rápido" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Modo rápido" @@ -5153,6 +5208,7 @@ msgstr "instalar" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "Instale {0}." msgid "Install {env}" msgstr "Instalar {env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "Instale o @cursor/sdk para configurar a chave de API." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "Instalar ACP + SDK" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "Instalar ACP + SDK em {environment}" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "Instale o ACP, o SDK ou ambos e escolha qual ambiente de execução inicia novos chats da interface do Cursor. Os chats existentes permanecem vinculados ao ambiente que os criou." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "Instale o ACP, o SDK ou ambos e escolha qual ambiente de execução inicia novos chats da interface do Cursor. Os chats existentes permanecem vinculados ao ambiente que os criou." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Instalar Cursor Agent (ACP) em {environment}" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Instalar o SDK do Cursor" @@ -5243,6 +5304,10 @@ msgstr "Instalar o Tailscale" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "Instale o Tailscale para habilitar o acesso HTTPS pelo MagicDNS." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "Instale o pacote para adicionar sua chave de API." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "Modelo adicionado aos favoritos" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Controles do modelo" +#~ msgid "Model controls" +#~ msgstr "Controles do modelo" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "Substitui {conflict}" msgid "Overriding the global setting for this project." msgstr "Substituindo a configuração global para este projeto." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Pacote" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Configuração do pacote" @@ -7489,6 +7558,10 @@ msgstr "Cole a chave de API do {label}" msgid "Paste <0>{0} here. Click to copy." msgstr "Cole <0>{0} aqui. Clique para copiar." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Cole a chave de API do Cursor" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Cole um objeto de servidor nomeado ou um objeto envolvido por uma chave mcpServers." @@ -7572,6 +7645,10 @@ msgstr "Escolher elemento" msgid "Pick icon" msgstr "Escolha o ícone" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Escolha o tempo de execução usado pelos novos chats de GUI do Cursor. Cada um é instalado e autenticado separadamente; chats abertos mantêm aquele com que foram iniciados." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "Falha no seletor" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Pronto. Ative para anunciar a URL HTTPS do Tailscale em novos códigos de pareamento." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Raciocínio" @@ -8346,6 +8422,10 @@ msgstr "Remover perfil do Claude" msgid "Remove connection" msgstr "Remover conexão" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Remover chave de API do SDK do Cursor" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Remover variável de ambiente" @@ -8869,6 +8949,10 @@ msgstr "Esgota antes" msgid "Runs out in {runOut}" msgstr "Esgota em {runOut}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "É executado pela CLI do Cursor. Instale, atualize e entre usando as linhas de ambiente acima." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "Opções de tempo de execução" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Salvar perfil do Claude" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Salvar runtime da interface do Cursor" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Salvar runtime da interface do Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Salvar chave de API do SDK do Cursor" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "Salvar servidores MCP" msgid "Save shortcut" msgstr "Salvar atalho" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Chave de API salva" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "As credenciais salvas são compartilhadas em todos os ambientes." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "Rolar até o fim" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "Autenticação do SDK" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK instalado" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "O modo SDK requer um pacote @cursor/sdk instalado separadamente e CURSOR_API_KEY. Ele não usa o login da CLI do Cursor Agent." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "O modo SDK requer um pacote @cursor/sdk instalado separadamente e CURSOR_API_KEY. Ele não usa o login da CLI do Cursor Agent." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK não instalado" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "Caminho do pacote SDK" +#~ msgid "SDK package path" +#~ msgstr "Caminho do pacote SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "Caminho do pacote SDK (opcional)" +#~ msgid "SDK package path (optional)" +#~ msgstr "Caminho do pacote SDK (opcional)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "Suporte:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Compatível com o modo rápido" @@ -10492,7 +10589,6 @@ msgstr "Esses servidores MCP integrados são compartilhados entre as conversas d #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Pensando" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "atualização" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "Atualizar" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "As verificações de atualização não estão disponíveis no modo de desenvolvimento." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Atualizar o SDK do Cursor" diff --git a/src/renderer/locales/ru/messages.po b/src/renderer/locales/ru/messages.po index 6e4ac415..c036d388 100644 --- a/src/renderer/locales/ru/messages.po +++ b/src/renderer/locales/ru/messages.po @@ -233,7 +233,7 @@ msgstr "Лимит {0}" msgid "{0} logged out." msgstr "{0} вышел из системы." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "Моделей: {0}" @@ -559,13 +559,17 @@ msgstr "{usedLabel} токенов" msgid "{visibleCount} of {totalCount} visible" msgstr "{visibleCount} из {totalCount} видимых" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk не установлен." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/путь/к/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/путь/к/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Аккаунты" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "Агенты ACP" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "Аутентификация ACP" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP установлен" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP не установлен" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP использует вход Cursor Agent. SDK использует @cursor/sdk с CURSOR_API_KEY." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP использует вход Cursor Agent. SDK использует @cursor/sdk с CURSOR_API_KEY." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Другая операция для этого эксперимента msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "API-ключ" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "Требуется ключ API" @@ -1336,6 +1347,10 @@ msgstr "Звук" msgid "Authenticate" msgstr "Войти" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Аутентифицировано" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Аутентификация" @@ -1349,6 +1364,10 @@ msgstr "Требуется аутентификация" msgid "Authentication setup cannot be imported" msgstr "Настройку аутентификации нельзя импортировать" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Аутентификация недоступна" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "Созданные мной" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Интервал автообновления в минутах, 0 — отключить" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Автопроверка" @@ -2017,6 +2037,10 @@ msgstr "Выбрать файл идентификации SSH" msgid "Choose the display language for Poracode's interface." msgstr "Выберите язык интерфейса Poracode." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Выберите среду выполнения для новых чатов Cursor с графическим интерфейсом. SDK станет доступен после обнаружения пакета и аутентификации API-ключа." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Выберите структурированную среду выполнения для новых GUI-потоков Cursor. Запущенные потоки сохранят текущую среду." @@ -2716,7 +2740,6 @@ msgstr "Содержит конфиденциальные значения; до #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Контекст" @@ -3184,6 +3207,7 @@ msgstr "Назначен победителем" #~ msgstr "Отобранные бесплатные и премиальные навыки под управлением MCP Market." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Текущие" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Среда выполнения GUI Cursor обновлена." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Аутентификация Cursor ACP обновлена." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Выполнен выход из Cursor ACP." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Среда выполнения GUI Cursor обновлена." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (внешний пакет)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "API-ключ Cursor SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "API-ключ Cursor SDK удалён." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "API-ключ Cursor SDK сохранён." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Cursor SDK обновлён до последней версии." @@ -3280,7 +3336,6 @@ msgstr "Отклонить" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "По умолчанию" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Введите допустимый SSH-адрес и порт." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "Введите абсолютный путь к пакету @cursor/sdk или оставьте поле пустым для автоматического обнаружения." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "Введите абсолютный путь к пакету @cursor/sdk или оставьте поле пустым для автоматического обнаружения." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "Не удалось обновить цель" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Быстрый" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Быстрый режим" @@ -5153,6 +5208,7 @@ msgstr "установки" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "Установить {0}." msgid "Install {env}" msgstr "Установить {env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "Установите @cursor/sdk, чтобы настроить API-ключ." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "Установить ACP + SDK" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "Установить ACP + SDK в {environment}" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "Установите ACP, SDK или оба варианта, затем выберите среду выполнения для новых чатов Cursor с графическим интерфейсом. Существующие чаты останутся привязаны к создавшей их среде." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "Установите ACP, SDK или оба варианта, затем выберите среду выполнения для новых чатов Cursor с графическим интерфейсом. Существующие чаты останутся привязаны к создавшей их среде." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Установить Cursor Agent (ACP) в {environment}" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Установить Cursor SDK" @@ -5243,6 +5304,10 @@ msgstr "Установить Tailscale" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "Установите Tailscale, чтобы включить HTTPS-доступ через MagicDNS." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "Установите пакет, чтобы добавить его API-ключ." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "Модель добавлена в избранное" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Параметры модели" +#~ msgid "Model controls" +#~ msgstr "Параметры модели" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "Переопределяет {conflict}" msgid "Overriding the global setting for this project." msgstr "Переопределение глобальной настройки для этого проекта." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Пакет" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Конфигурация пакета" @@ -7489,6 +7558,10 @@ msgstr "Вставьте API-ключ {label}" msgid "Paste <0>{0} here. Click to copy." msgstr "Вставьте <0>{0} сюда. Нажмите, чтобы скопировать." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Вставьте API-ключ Cursor" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Вставьте именованный объект сервера или объект, вложенный в ключ mcpServers." @@ -7572,6 +7645,10 @@ msgstr "Выбрать элемент" msgid "Pick icon" msgstr "Выбрать значок" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Выберите среду выполнения для новых GUI-чатов Cursor. Каждая среда выполнения устанавливается и аутентифицируется отдельно; открытые чаты сохраняют ту, с которой были запущены." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "Сбой выбора" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Готово. Включите, чтобы объявлять HTTPS-URL Tailscale в новых кодах сопряжения." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Рассуждения" @@ -8346,6 +8422,10 @@ msgstr "Удалить профиль Claude" msgid "Remove connection" msgstr "Удалить подключение" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Удалить API-ключ Cursor SDK" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Удалить переменную окружения" @@ -8869,6 +8949,10 @@ msgstr "Закончится раньше" msgid "Runs out in {runOut}" msgstr "Закончится через {runOut}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Работает через CLI Cursor. Установите и обновите его, затем войдите в систему в строках окружения выше." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "Параметры среды выполнения" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Сохранить профиль Claude" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Сохранить среду выполнения GUI Cursor" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Сохранить среду выполнения GUI Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Сохранить API-ключ Cursor SDK" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "Сохранить серверы MCP" msgid "Save shortcut" msgstr "Сохранить сочетание клавиш" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Сохранённый API-ключ" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "Сохранённые учётные данные используются во всех средах." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "Прокрутить вниз" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "Аутентификация SDK" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK установлен" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "Для режима SDK требуется отдельно установленный пакет @cursor/sdk и CURSOR_API_KEY. Вход через CLI Cursor Agent не используется." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "Для режима SDK требуется отдельно установленный пакет @cursor/sdk и CURSOR_API_KEY. Вход через CLI Cursor Agent не используется." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK не установлен" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "Путь к пакету SDK" +#~ msgid "SDK package path" +#~ msgstr "Путь к пакету SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "Путь к пакету SDK (необязательно)" +#~ msgid "SDK package path (optional)" +#~ msgstr "Путь к пакету SDK (необязательно)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "Поддержка:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Поддерживает быстрый режим" @@ -10492,7 +10589,6 @@ msgstr "Эти встроенные серверы MCP используются #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Размышление" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "обновление" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "Обновить" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "Проверка обновлений недоступна в режиме разработки." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Обновить Cursor SDK" diff --git a/src/renderer/locales/tr/messages.po b/src/renderer/locales/tr/messages.po index af397ae3..a108b206 100644 --- a/src/renderer/locales/tr/messages.po +++ b/src/renderer/locales/tr/messages.po @@ -233,7 +233,7 @@ msgstr "{0} sınırı" msgid "{0} logged out." msgstr "{0} oturumu kapatıldı." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "{0} model" @@ -559,13 +559,17 @@ msgstr "{usedLabel} jeton" msgid "{visibleCount} of {totalCount} visible" msgstr "{totalCount} öğeden {visibleCount} tanesi görünür" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk kurulu değil." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/yol/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/yol/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Hesaplar" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "ACP Temsilcileri" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "ACP kimlik doğrulaması" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP yüklü" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP yüklü değil" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP, Cursor Agent oturumunu kullanır. SDK, CURSOR_API_KEY ile @cursor/sdk kullanır." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP, Cursor Agent oturumunu kullanır. SDK, CURSOR_API_KEY ile @cursor/sdk kullanır." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Bu deney için başka bir işlem hâlâ devam ediyor." msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "API anahtarı" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "API anahtarı gerekli" @@ -1336,6 +1347,10 @@ msgstr "Ses" msgid "Authenticate" msgstr "Kimlik doğrula" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Kimlik doğrulandı" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Kimlik doğrulama" @@ -1349,6 +1364,10 @@ msgstr "Kimlik doğrulama gerekli" msgid "Authentication setup cannot be imported" msgstr "Kimlik doğrulama ayarları içe aktarılamaz" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Kimlik doğrulama kullanılamıyor" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "Oluşturduklarım" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Dakika cinsinden otomatik yenileme aralığı, kapatmak için 0" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Otomatik inceleme" @@ -2017,6 +2037,10 @@ msgstr "SSH kimlik dosyasını seç" msgid "Choose the display language for Poracode's interface." msgstr "Poracode'un arayüzü için görüntüleme dilini seçin." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Yeni Cursor GUI sohbetleri için çalışma zamanını seçin. SDK, paketi algılandıktan ve API anahtarı doğrulandıktan sonra kullanılabilir." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Yeni Cursor GUI iş parçacıkları için yapılandırılmış çalışma zamanını seçin. Çalışan iş parçacıkları mevcut çalışma zamanını korur." @@ -2716,7 +2740,6 @@ msgstr "Hassas değerler içeriyor; elle ekleyin" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Bağlam" @@ -3184,6 +3207,7 @@ msgstr "Kazanan seçildi" #~ msgstr "MCP Market tarafından yönetilen seçilmiş ücretsiz ve premium beceriler." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Güncel" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Cursor GUI çalışma zamanı güncellendi." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Cursor ACP kimlik doğrulaması yenilendi." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Cursor ACP oturumu kapatıldı." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Cursor GUI çalışma zamanı güncellendi." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (harici paket)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Cursor SDK API anahtarı" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Cursor SDK API anahtarı kaldırıldı." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Cursor SDK API anahtarı kaydedildi." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Cursor SDK güncel." @@ -3280,7 +3336,6 @@ msgstr "Reddet" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "Varsayılan" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Geçerli bir SSH hedefi ve bağlantı noktası girin." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "@cursor/sdk paketi için mutlak bir yol girin veya otomatik keşif için bu alanı boş bırakın." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "@cursor/sdk paketi için mutlak bir yol girin veya otomatik keşif için bu alanı boş bırakın." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "Hedef güncellenemedi" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Hızlı" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Hızlı mod" @@ -5153,6 +5208,7 @@ msgstr "yükle" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "{0} yükleyin." msgid "Install {env}" msgstr "{env}'i yükleyin" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "API anahtarını yapılandırmak için @cursor/sdk paketini yükleyin." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "ACP + SDK'yı yükle" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "ACP + SDK'yı {environment} ortamına yükle" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "ACP'yi, SDK'yı veya her ikisini yükleyin, ardından yeni Cursor GUI sohbetlerini hangi çalışma zamanının başlatacağını seçin. Mevcut sohbetler, onları oluşturan çalışma zamanına bağlı kalır." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "ACP'yi, SDK'yı veya her ikisini yükleyin, ardından yeni Cursor GUI sohbetlerini hangi çalışma zamanının başlatacağını seçin. Mevcut sohbetler, onları oluşturan çalışma zamanına bağlı kalır." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Cursor Agent'ı (ACP) {environment} ortamına yükle" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Cursor SDK'yı yükle" @@ -5243,6 +5304,10 @@ msgstr "Tailscale'i yükle" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "MagicDNS üzerinden HTTPS erişimini etkinleştirmek için Tailscale'i yükleyin." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "API anahtarını eklemek için paketi yükleyin." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "Model favorilere eklendi" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Model denetimleri" +#~ msgid "Model controls" +#~ msgstr "Model denetimleri" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "{conflict} kısayolunu geçersiz kılar" msgid "Overriding the global setting for this project." msgstr "Bu proje için genel ayar geçersiz kılınıyor." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Paket" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Paket yapılandırması" @@ -7489,6 +7558,10 @@ msgstr "{label} API anahtarını yapıştır" msgid "Paste <0>{0} here. Click to copy." msgstr "<0>{0} öğesini buraya yapıştırın. Kopyalamak için tıklayın." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Cursor API anahtarını yapıştırın" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Adlandırılmış bir sunucu nesnesi veya mcpServers anahtarı içine alınmış bir nesne yapıştırın." @@ -7572,6 +7645,10 @@ msgstr "Öğeyi seç" msgid "Pick icon" msgstr "Simge seç" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Yeni Cursor GUI sohbetlerinde kullanılacak çalışma zamanını seçin. Her çalışma zamanı ayrı ayrı yüklenir ve kimlik doğrulaması yapar; açık sohbetler başladıkları çalışma zamanını korur." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "Seçici başarısız oldu" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Hazır. Yeni eşleştirme kodlarında Tailscale HTTPS URL'sini duyurmak için bunu açın." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Akıl yürütme" @@ -8346,6 +8422,10 @@ msgstr "Claude profilini kaldır" msgid "Remove connection" msgstr "Bağlantıyı kaldır" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Cursor SDK API anahtarını kaldır" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Ortam değişkenini kaldır" @@ -8869,6 +8949,10 @@ msgstr "Erken tükeniyor" msgid "Runs out in {runOut}" msgstr "{runOut} içinde biter" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Cursor CLI üzerinden çalışır. Yukarıdaki ortam satırlarından yükleyin, güncelleyin ve oturum açın." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "Çalışma zamanı seçenekleri" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Claude profilini kaydet" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Cursor GUI çalışma zamanını kaydet" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Cursor GUI çalışma zamanını kaydet" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Cursor SDK API anahtarını kaydet" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "MCP sunucularını kaydet" msgid "Save shortcut" msgstr "Kısayolu kaydet" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Kaydedilmiş API anahtarı" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "Kaydedilen kimlik bilgileri tüm ortamlarda paylaşılır." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "Aşağıya doğru kaydır" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "SDK kimlik doğrulaması" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK yüklü" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "SDK modu, ayrı olarak yüklenmiş bir @cursor/sdk paketi ve CURSOR_API_KEY gerektirir. Cursor Agent CLI oturumunu kullanmaz." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "SDK modu, ayrı olarak yüklenmiş bir @cursor/sdk paketi ve CURSOR_API_KEY gerektirir. Cursor Agent CLI oturumunu kullanmaz." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK yüklü değil" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "SDK paket yolu" +#~ msgid "SDK package path" +#~ msgstr "SDK paket yolu" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "SDK paket yolu (isteğe bağlı)" +#~ msgid "SDK package path (optional)" +#~ msgstr "SDK paket yolu (isteğe bağlı)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "Destek:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Hızlı modu destekler" @@ -10492,7 +10589,6 @@ msgstr "Bu yerleşik MCP sunucuları OpenCode konuları arasında paylaşılır. #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Düşünme" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "güncelleme" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "Güncelleme" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "Geliştirme modunda güncelleme denetimi kullanılamaz." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Cursor SDK'yı güncelle" diff --git a/src/renderer/locales/uk/messages.po b/src/renderer/locales/uk/messages.po index fc8477bc..9e2d05f7 100644 --- a/src/renderer/locales/uk/messages.po +++ b/src/renderer/locales/uk/messages.po @@ -233,7 +233,7 @@ msgstr "Ліміт {0}" msgid "{0} logged out." msgstr "{0} вийшов із системи." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "Моделей: {0}" @@ -559,13 +559,17 @@ msgstr "{usedLabel} токенів" msgid "{visibleCount} of {totalCount} visible" msgstr "{visibleCount} із {totalCount} видимих" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk не встановлено." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/шлях/до/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/шлях/до/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Облікові записи" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "Агенти ACP" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "Автентифікація ACP" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP установлено" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP не встановлено" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP використовує вхід Cursor Agent. SDK використовує @cursor/sdk із CURSOR_API_KEY." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP використовує вхід Cursor Agent. SDK використовує @cursor/sdk із CURSOR_API_KEY." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Інша операція для цього експерименту щ msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "API-ключ" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "Потрібен ключ API" @@ -1336,6 +1347,10 @@ msgstr "Звук" msgid "Authenticate" msgstr "Увійти" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Автентифіковано" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Автентифікація" @@ -1349,6 +1364,10 @@ msgstr "Потрібна автентифікація" msgid "Authentication setup cannot be imported" msgstr "Налаштування автентифікації неможливо імпортувати" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Автентифікація недоступна" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "Створені мною" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Інтервал автооновлення у хвилинах, 0 — вимкнути" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Автоперевірка" @@ -2017,6 +2037,10 @@ msgstr "Вибрати файл ідентифікації SSH" msgid "Choose the display language for Poracode's interface." msgstr "Виберіть мову відображення інтерфейсу Poracode." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Виберіть середовище виконання для нових чатів Cursor із графічним інтерфейсом. SDK стане доступним після виявлення пакета й автентифікації API-ключа." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Виберіть структуроване середовище виконання для нових GUI-потоків Cursor. Запущені потоки збережуть поточне середовище." @@ -2716,7 +2740,6 @@ msgstr "Містить конфіденційні значення; додайт #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Контекст" @@ -3184,6 +3207,7 @@ msgstr "Обрано переможцем" #~ msgstr "Відібрані безкоштовні та преміальні навички під керуванням MCP Market." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Поточні" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Середовище виконання GUI Cursor оновлено." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Автентифікацію Cursor ACP оновлено." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Виконано вихід із Cursor ACP." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Середовище виконання GUI Cursor оновлено." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (зовнішній пакет)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "API-ключ Cursor SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "API-ключ Cursor SDK видалено." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "API-ключ Cursor SDK збережено." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Cursor SDK оновлено до останньої версії." @@ -3280,7 +3336,6 @@ msgstr "Відхилити" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "За замовчуванням" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Введіть дійсну SSH-адресу та порт." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "Введіть абсолютний шлях до пакета @cursor/sdk або залиште поле порожнім для автоматичного виявлення." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "Введіть абсолютний шлях до пакета @cursor/sdk або залиште поле порожнім для автоматичного виявлення." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "Не вдалося оновити мету" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Швидкий" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Швидкий режим" @@ -5153,6 +5208,7 @@ msgstr "встановлення" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "Встановити {0}." msgid "Install {env}" msgstr "Встановити {env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "Установіть @cursor/sdk, щоб налаштувати API-ключ." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "Установити ACP + SDK" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "Установити ACP + SDK у {environment}" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "Установіть ACP, SDK або обидва варіанти, а потім виберіть середовище виконання для нових чатів Cursor із графічним інтерфейсом. Наявні чати залишаться прив’язаними до середовища, яке їх створило." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "Установіть ACP, SDK або обидва варіанти, а потім виберіть середовище виконання для нових чатів Cursor із графічним інтерфейсом. Наявні чати залишаться прив’язаними до середовища, яке їх створило." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Установити Cursor Agent (ACP) у {environment}" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Установити Cursor SDK" @@ -5243,6 +5304,10 @@ msgstr "Встановити Tailscale" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "Установіть Tailscale, щоб увімкнути HTTPS-доступ через MagicDNS." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "Встановіть пакет, щоб додати його API-ключ." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "Модель додано до обраного" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Елементи керування моделлю" +#~ msgid "Model controls" +#~ msgstr "Елементи керування моделлю" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "Перевизначає {conflict}" msgid "Overriding the global setting for this project." msgstr "Перевизначення глобального налаштування для цього проєкту." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Пакет" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Конфігурація пакета" @@ -7489,6 +7558,10 @@ msgstr "Вставте API-ключ {label}" msgid "Paste <0>{0} here. Click to copy." msgstr "Вставте <0>{0} сюди. Натисніть, щоб скопіювати." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Вставте API-ключ Cursor" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Вставте іменований об’єкт сервера або об’єкт, вкладений у ключ mcpServers." @@ -7572,6 +7645,10 @@ msgstr "Вибрати елемент" msgid "Pick icon" msgstr "Вибрати значок" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Виберіть середовище виконання для нових GUI-чатів Cursor. Кожне середовище встановлюється та автентифікується окремо; відкриті чати зберігають те, з яким були запущені." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "Помилка вибору" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Готово. Увімкніть, щоб оголошувати HTTPS-URL Tailscale у нових кодах сполучення." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Міркування" @@ -8346,6 +8422,10 @@ msgstr "Видалити профіль Claude" msgid "Remove connection" msgstr "Видалити підключення" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Видалити API-ключ Cursor SDK" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Видалити змінну середовища" @@ -8869,6 +8949,10 @@ msgstr "Закінчиться раніше" msgid "Runs out in {runOut}" msgstr "Закінчиться через {runOut}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Працює через CLI Cursor. Установіть і оновіть його, а потім увійдіть у систему в рядках середовища вище." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "Параметри середовища виконання" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Зберегти профіль Claude" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Зберегти середовище виконання GUI Cursor" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Зберегти середовище виконання GUI Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Зберегти API-ключ Cursor SDK" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "Зберегти сервери MCP" msgid "Save shortcut" msgstr "Зберегти комбінацію клавіш" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Збережений API-ключ" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "Збережені облікові дані використовуються в усіх середовищах." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "Прокрутити вниз" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "Автентифікація SDK" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK установлено" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "Для режиму SDK потрібні окремо встановлений пакет @cursor/sdk і CURSOR_API_KEY. Вхід через CLI Cursor Agent не використовується." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "Для режиму SDK потрібні окремо встановлений пакет @cursor/sdk і CURSOR_API_KEY. Вхід через CLI Cursor Agent не використовується." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK не встановлено" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "Шлях до пакета SDK" +#~ msgid "SDK package path" +#~ msgstr "Шлях до пакета SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "Шлях до пакета SDK (необов’язково)" +#~ msgid "SDK package path (optional)" +#~ msgstr "Шлях до пакета SDK (необов’язково)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "Підтримка:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Підтримує швидкий режим" @@ -10492,7 +10589,6 @@ msgstr "Ці вбудовані сервери MCP спільно викорис #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Міркування" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "оновлення" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "Оновити" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "Перевірка оновлень недоступна в режимі розробки." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Оновити Cursor SDK" diff --git a/src/renderer/locales/vi/messages.po b/src/renderer/locales/vi/messages.po index 01d3bdb7..8d17da62 100644 --- a/src/renderer/locales/vi/messages.po +++ b/src/renderer/locales/vi/messages.po @@ -233,7 +233,7 @@ msgstr "Giới hạn {0}" msgid "{0} logged out." msgstr "{0} đã đăng xuất." -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "{0} mô hình" @@ -559,13 +559,17 @@ msgstr "{usedLabel} mã thông báo" msgid "{visibleCount} of {totalCount} visible" msgstr "{visibleCount} trong số {totalCount} hiển thị" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk chưa được cài đặt." + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/đường/dẫn/đến/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/đường/dẫn/đến/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "Tài khoản" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "Tác nhân ACP" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "Xác thực ACP" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "Đã cài ACP" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "Chưa cài ACP" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP sử dụng thông tin đăng nhập Cursor Agent. SDK sử dụng @cursor/sdk với CURSOR_API_KEY." +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP sử dụng thông tin đăng nhập Cursor Agent. SDK sử dụng @cursor/sdk với CURSOR_API_KEY." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "Một thao tác khác của thử nghiệm này vẫn đang chạy." msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "Khóa API" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "Cần khóa API" @@ -1336,6 +1347,10 @@ msgstr "Âm thanh" msgid "Authenticate" msgstr "Xác thực" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "Đã xác thực" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "Xác thực" @@ -1349,6 +1364,10 @@ msgstr "Yêu cầu xác thực" msgid "Authentication setup cannot be imported" msgstr "Không thể nhập thiết lập xác thực" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "Không thể xác thực" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "Do bạn tạo" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "Khoảng thời gian tự động làm mới tính bằng phút, 0 để tắt" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "Tự động xem xét" @@ -2017,6 +2037,10 @@ msgstr "Chọn tệp danh tính SSH" msgid "Choose the display language for Poracode's interface." msgstr "Chọn ngôn ngữ hiển thị cho giao diện của Poracode." +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "Chọn môi trường chạy cho các cuộc trò chuyện GUI Cursor mới. SDK sẽ khả dụng sau khi gói được phát hiện và khóa API được xác thực." + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "Chọn môi trường chạy có cấu trúc cho các luồng GUI Cursor mới. Các luồng đang chạy sẽ giữ môi trường hiện tại." @@ -2716,7 +2740,6 @@ msgstr "Có chứa giá trị nhạy cảm; hãy thêm thủ công" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "Ngữ cảnh" @@ -3184,6 +3207,7 @@ msgstr "Đã chọn là ứng viên thắng" #~ msgstr "Các skill miễn phí và cao cấp được tuyển chọn, do MCP Market quản lý." #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "Gần đây" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Đã cập nhật môi trường chạy GUI Cursor." +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "Đã làm mới xác thực Cursor ACP." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "Đã đăng xuất khỏi Cursor ACP." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Đã cập nhật môi trường chạy GUI Cursor." + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK (gói bên ngoài)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Khóa API Cursor SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "Đã xóa khóa API Cursor SDK." + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "Đã lưu khóa API Cursor SDK." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Cursor SDK đã được cập nhật." @@ -3280,7 +3336,6 @@ msgstr "Từ chối" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "Mặc định" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "Nhập đích SSH và cổng hợp lệ." #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "Nhập đường dẫn tuyệt đối đến gói @cursor/sdk hoặc để trống để tự động phát hiện." +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "Nhập đường dẫn tuyệt đối đến gói @cursor/sdk hoặc để trống để tự động phát hiện." #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "Không thể cập nhật mục tiêu" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "Nhanh" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "Chế độ nhanh" @@ -5153,6 +5208,7 @@ msgstr "cài đặt" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "Cài đặt {0}." msgid "Install {env}" msgstr "Cài đặt {env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "Cài đặt @cursor/sdk để cấu hình khóa API." + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "Cài đặt ACP + SDK" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "Cài đặt ACP + SDK trong {environment}" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "Cài đặt ACP, SDK hoặc cả hai, sau đó chọn môi trường chạy để bắt đầu các cuộc trò chuyện Cursor GUI mới. Các cuộc trò chuyện hiện có vẫn gắn với môi trường đã tạo ra chúng." +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "Cài đặt ACP, SDK hoặc cả hai, sau đó chọn môi trường chạy để bắt đầu các cuộc trò chuyện Cursor GUI mới. Các cuộc trò chuyện hiện có vẫn gắn với môi trường đã tạo ra chúng." #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "Cài đặt Cursor Agent (ACP) trong {environment}" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "Cài đặt Cursor SDK" @@ -5243,6 +5304,10 @@ msgstr "Cài đặt Tailscale" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "Cài đặt Tailscale để bật quyền truy cập HTTPS qua MagicDNS." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "Cài đặt gói để thêm khóa API của nó." + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6091,8 +6156,8 @@ msgid "Model added to favorites" msgstr "Đã thêm mô hình vào mục yêu thích" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "Điều khiển mô hình" +#~ msgid "Model controls" +#~ msgstr "Điều khiển mô hình" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7371,6 +7436,10 @@ msgstr "Ghi đè {conflict}" msgid "Overriding the global setting for this project." msgstr "Ghi đè cài đặt chung cho dự án này." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "Gói" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "Cấu hình gói" @@ -7489,6 +7558,10 @@ msgstr "Dán khóa API {label}" msgid "Paste <0>{0} here. Click to copy." msgstr "Dán <0>{0} vào đây. Nhấn vào đây để sao chép." +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "Dán khóa API Cursor" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "Dán đối tượng máy chủ có tên hoặc đối tượng được bao bọc trong khóa mcpServers." @@ -7572,6 +7645,10 @@ msgstr "Chọn phần tử" msgid "Pick icon" msgstr "Chọn biểu tượng" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "Chọn thời gian chạy cho các cuộc trò chuyện GUI Cursor mới. Mỗi thời gian chạy được cài đặt và xác thực riêng; các cuộc trò chuyện đang mở giữ nguyên thời gian chạy khi bắt đầu." + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "Bộ chọn không thành công" @@ -8129,7 +8206,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "Sẵn sàng. Bật tùy chọn này để quảng bá URL HTTPS của Tailscale trong các mã ghép đôi mới." #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "Suy luận" @@ -8346,6 +8422,10 @@ msgstr "Xóa hồ sơ Claude" msgid "Remove connection" msgstr "Xóa kết nối" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "Xóa khóa API Cursor SDK" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "Xóa biến môi trường" @@ -8869,6 +8949,10 @@ msgstr "Hết sớm" msgid "Runs out in {runOut}" msgstr "Sẽ hết sau {runOut}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "Chạy qua Cursor CLI. Hãy cài đặt, cập nhật và đăng nhập từ các hàng môi trường ở trên." + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8890,7 +8974,6 @@ msgstr "Tùy chọn thời gian chạy" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8910,8 +8993,12 @@ msgid "Save Claude profile" msgstr "Lưu hồ sơ Claude" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "Lưu môi trường chạy GUI Cursor" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "Lưu môi trường chạy GUI Cursor" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "Lưu khóa API Cursor SDK" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8925,6 +9012,10 @@ msgstr "Lưu máy chủ MCP" msgid "Save shortcut" msgstr "Lưu phím tắt" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "Khóa API đã lưu" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "Thông tin đăng nhập đã lưu được chia sẻ trên tất cả các môi trường." @@ -9006,28 +9097,32 @@ msgid "Scroll to bottom" msgstr "Cuộn xuống dưới cùng" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "Xác thực SDK" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "Đã cài SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "Chế độ SDK yêu cầu gói @cursor/sdk được cài đặt riêng và CURSOR_API_KEY. Chế độ này không dùng thông tin đăng nhập CLI của Cursor Agent." +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "Chế độ SDK yêu cầu gói @cursor/sdk được cài đặt riêng và CURSOR_API_KEY. Chế độ này không dùng thông tin đăng nhập CLI của Cursor Agent." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "Chưa cài SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "Đường dẫn gói SDK" +#~ msgid "SDK package path" +#~ msgstr "Đường dẫn gói SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "Đường dẫn gói SDK (không bắt buộc)" +#~ msgid "SDK package path (optional)" +#~ msgstr "Đường dẫn gói SDK (không bắt buộc)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10064,6 +10159,8 @@ msgid "Support:" msgstr "Hỗ trợ:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "Hỗ trợ chế độ nhanh" @@ -10492,7 +10589,6 @@ msgstr "Các máy chủ MCP tích hợp sẵn này được chia sẻ giữa cá #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "Đang suy nghĩ" @@ -11266,6 +11362,7 @@ msgid "update" msgstr "cập nhật" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "cập nhật" @@ -11288,6 +11385,7 @@ msgid "Update checks are not available in development mode." msgstr "Không thể kiểm tra bản cập nhật trong chế độ phát triển." #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "Cập nhật Cursor SDK" diff --git a/src/renderer/locales/zh-CN/messages.po b/src/renderer/locales/zh-CN/messages.po index 1e2b287f..f3e778b8 100644 --- a/src/renderer/locales/zh-CN/messages.po +++ b/src/renderer/locales/zh-CN/messages.po @@ -233,7 +233,7 @@ msgstr "{0}限制" msgid "{0} logged out." msgstr "{0}已注销。" -#. placeholder {0}: runtime.capabilities.models.length +#. placeholder {0}: capabilities.models.length #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "{0} models" msgstr "{0} 个模型" @@ -559,13 +559,17 @@ msgstr "{usedLabel} 令牌" msgid "{visibleCount} of {totalCount} visible" msgstr "{totalCount} 中的 {visibleCount} 个可见" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "@cursor/sdk is not installed." +msgstr "@cursor/sdk 未安装。" + #: src/renderer/views/SettingsOverlay/parts/RemoteServersSettings.tsx msgid "/absolute/path/to/project" msgstr "/absolute/path/to/project" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "/path/to/node_modules/@cursor/sdk" -msgstr "/路径/到/node_modules/@cursor/sdk" +#~ msgid "/path/to/node_modules/@cursor/sdk" +#~ msgstr "/路径/到/node_modules/@cursor/sdk" #: src/renderer/components/skills/SkillsManager.tsx #~ msgid "/skill-creator Create a new managed skill for {destination}." @@ -675,7 +679,6 @@ msgstr "账户" #: src/renderer/components/thread/ThreadHeaderStatus.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "ACP" msgstr "ACP" @@ -687,6 +690,10 @@ msgstr "ACP" msgid "ACP Agents" msgstr "ACP 代理" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "ACP authentication" +#~ msgstr "ACP 身份验证" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "ACP installed" msgstr "ACP 已安装" @@ -696,8 +703,8 @@ msgid "ACP not installed" msgstr "ACP 未安装" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." -msgstr "ACP 使用 Cursor Agent 登录。SDK 使用 @cursor/sdk 和 CURSOR_API_KEY。" +#~ msgid "ACP uses the Cursor Agent login. SDK uses @cursor/sdk with CURSOR_API_KEY." +#~ msgstr "ACP 使用 Cursor Agent 登录。SDK 使用 @cursor/sdk 和 CURSOR_API_KEY。" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "ACP uses the installed Cursor Agent. SDK loads an external @cursor/sdk package." @@ -1169,6 +1176,10 @@ msgstr "此实验的另一个操作仍在运行。" msgid "Antigravity" msgstr "Antigravity" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "API key" +msgstr "API 密钥" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "API key required" msgstr "需要 API 密钥" @@ -1336,6 +1347,10 @@ msgstr "音频" msgid "Authenticate" msgstr "身份验证" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authenticated" +msgstr "已通过身份验证" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Authentication" msgstr "认证" @@ -1349,6 +1364,10 @@ msgstr "需要身份验证" msgid "Authentication setup cannot be imported" msgstr "无法导入身份验证设置" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Authentication unavailable" +msgstr "身份验证不可用" + #: src/renderer/views/PullRequestsView/PullRequestsView.tsx msgid "Authored" msgstr "我创建的" @@ -1413,6 +1432,7 @@ msgid "Auto-refresh interval in minutes, 0 to turn off" msgstr "自动刷新间隔以分钟为单位,0为关闭" #: src/renderer/components/providers/codex/index.tsx +#: src/renderer/components/providers/cursor/index.tsx msgid "Auto-review" msgstr "自动审核" @@ -2017,6 +2037,10 @@ msgstr "选择 SSH 身份文件" msgid "Choose the display language for Poracode's interface." msgstr "选择 Poracode 界面的显示语言。" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Choose the runtime for new Cursor GUI chats. SDK becomes available after its package is detected and its API key is authenticated." +#~ msgstr "选择用于新 Cursor GUI 聊天的运行时。检测到 SDK 软件包并验证其 API 密钥后,SDK 才可用。" + #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Choose the structured runtime for new Cursor GUI threads. Running threads keep their current runtime." #~ msgstr "为新的 Cursor GUI 线程选择结构化运行时。正在运行的线程会保留其当前运行时。" @@ -2716,7 +2740,6 @@ msgstr "包含敏感值;请手动添加" #: src/mobile/ComposerInfoChips.tsx #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx #: src/renderer/components/thread/threadContextUsage.ts -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Context" msgstr "上下文" @@ -3184,6 +3207,7 @@ msgstr "已选为优胜者" #~ msgstr "由 MCP Market 管理的精选免费和高级技能。" #: src/mobile/views/ThreadsView.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorRuntimeCard.tsx msgid "Current" msgstr "最近" @@ -3204,13 +3228,45 @@ msgid "Cursor" msgstr "Cursor" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Cursor GUI runtime updated." -msgstr "Cursor GUI 运行时已更新。" +#~ msgid "Cursor ACP" +#~ msgstr "Cursor ACP" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP authentication refreshed." +#~ msgstr "已刷新 Cursor ACP 身份验证。" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor ACP logged out." +#~ msgstr "已退出 Cursor ACP。" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor CLI (ACP)" +msgstr "Cursor CLI (ACP)" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Cursor GUI runtime updated." +#~ msgstr "Cursor GUI 运行时已更新。" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Cursor SDK" +msgstr "Cursor SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #~ msgid "Cursor SDK (external package)" #~ msgstr "Cursor SDK(外部软件包)" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key" +msgstr "Cursor SDK API 密钥" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key removed." +msgstr "已移除 Cursor SDK API 密钥。" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Cursor SDK API key saved." +msgstr "已保存 Cursor SDK API 密钥。" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Cursor SDK is up to date." msgstr "Cursor SDK 已是最新版本。" @@ -3280,7 +3336,6 @@ msgstr "拒绝" msgid "DeepSeek" msgstr "DeepSeek" -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx msgid "Default" msgstr "默认" @@ -3970,8 +4025,8 @@ msgid "Enter a valid SSH target and port." msgstr "请输入有效的 SSH 目标和端口。" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." -msgstr "输入 @cursor/sdk 软件包的绝对路径,或留空以使用自动发现。" +#~ msgid "Enter an absolute @cursor/sdk package path, or leave this blank for automatic discovery." +#~ msgstr "输入 @cursor/sdk 软件包的绝对路径,或留空以使用自动发现。" #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Enter one MCP server configuration." @@ -4289,10 +4344,10 @@ msgstr "无法更新目标" #: src/renderer/components/providers/modelDisplay.ts #: src/renderer/components/thread/buildModelPickerControls.tsx #: src/renderer/views/SettingsOverlay/parts/CrossagentRoutingSection.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Fast" msgstr "快" +#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx #: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx msgid "Fast mode" msgstr "快速模式" @@ -5153,6 +5208,7 @@ msgstr "安装" #: src/renderer/components/skills/SkillMarketplaceModal.tsx #: src/renderer/components/thread/ThreadDraftComposerArea.tsx #: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/AgentEnvironmentRow.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Install" @@ -5177,6 +5233,10 @@ msgstr "安装{0}。" msgid "Install {env}" msgstr "安装{env}" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Install @cursor/sdk to configure its API key." +#~ msgstr "安装 @cursor/sdk 以配置其 API 密钥。" + #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "Install ACP + SDK" msgstr "安装 ACP + SDK" @@ -5186,8 +5246,8 @@ msgid "Install ACP + SDK in {environment}" msgstr "在 {environment} 中安装 ACP + SDK" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." -msgstr "安装 ACP、SDK 或两者,然后选择用于启动新 Cursor GUI 聊天的运行时。现有聊天会继续固定到创建它们的运行时。" +#~ msgid "Install ACP, SDK, or both, then choose which runtime starts new Cursor GUI chats. Existing chats stay pinned to the runtime that created them." +#~ msgstr "安装 ACP、SDK 或两者,然后选择用于启动新 Cursor GUI 聊天的运行时。现有聊天会继续固定到创建它们的运行时。" #: src/renderer/components/thread/ThreadDraftComposerArea.tsx msgid "Install CLI hooks" @@ -5202,6 +5262,7 @@ msgid "Install Cursor Agent (ACP) in {environment}" msgstr "在 {environment} 中安装 Cursor Agent (ACP)" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Install Cursor SDK" msgstr "安装 Cursor SDK" @@ -5243,6 +5304,10 @@ msgstr "安装 Tailscale" msgid "Install Tailscale to enable HTTPS access through MagicDNS." msgstr "安装 Tailscale 以通过 MagicDNS 启用 HTTPS 访问。" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Install the package to add its API key." +msgstr "安装该包后即可添加其 API 密钥。" + #: src/renderer/components/startup/StartupRecoveryScreen.tsx #: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx #: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx @@ -6090,8 +6155,8 @@ msgid "Model added to favorites" msgstr "已将模型添加到收藏夹" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Model controls" -msgstr "模型控件" +#~ msgid "Model controls" +#~ msgstr "模型控件" #. placeholder {0}: index + 1 #: src/renderer/components/experiment/NewExperimentModal.tsx @@ -7370,6 +7435,10 @@ msgstr "覆盖 {conflict}" msgid "Overriding the global setting for this project." msgstr "覆盖该项目的全局设置。" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Package" +msgstr "包" + #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts msgid "Package config" msgstr "包配置" @@ -7488,6 +7557,10 @@ msgstr "粘贴 {label} API 密钥" msgid "Paste <0>{0} here. Click to copy." msgstr "将 <0>{0} 粘贴到此处。点击复制。" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Paste Cursor API key" +msgstr "粘贴 Cursor API 密钥" + #: src/renderer/components/mcp/McpServerEditor.tsx msgid "Paste either a named server object or an object wrapped in an mcpServers key." msgstr "粘贴具名服务器对象,或以 mcpServers 键封装的对象。" @@ -7571,6 +7644,10 @@ msgstr "选取元素" msgid "Pick icon" msgstr "选择图标" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +msgid "Pick the runtime that backs new Cursor GUI chats. Each runtime installs and authenticates on its own; open chats keep the runtime they started with." +msgstr "选择用于新建 Cursor GUI 聊天的运行时。每个运行时单独安装并单独进行身份验证;已打开的聊天会保留启动时使用的运行时。" + #: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts msgid "Picker failed" msgstr "选取器失败" @@ -8128,7 +8205,6 @@ msgid "Ready. Turn this on to advertise the Tailscale HTTPS URL in new pairing c msgstr "就绪。打开后,新的配对码会公布 Tailscale HTTPS URL。" #: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Reasoning" msgstr "推理" @@ -8345,6 +8421,10 @@ msgstr "删除 Claude 配置文件" msgid "Remove connection" msgstr "删除连接" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Remove Cursor SDK API key" +msgstr "移除 Cursor SDK API 密钥" + #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx msgid "Remove environment variable" msgstr "移除环境变量" @@ -8868,6 +8948,10 @@ msgstr "提早用完" msgid "Runs out in {runOut}" msgstr "在{runOut}中用完" +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "Runs through the Cursor CLI. Install it, update it, and sign in from the environment rows above." +#~ msgstr "通过 Cursor CLI 运行。请在上方的环境行中安装、更新并登录。" + #: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx #: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx msgid "Runtime" @@ -8889,7 +8973,6 @@ msgstr "运行时选项" #: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx #: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx #: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/OpenCodeProviderSettings.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Save" @@ -8909,8 +8992,12 @@ msgid "Save Claude profile" msgstr "保存 Claude 配置文件" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "Save Cursor GUI runtime" -msgstr "保存 Cursor GUI 运行时" +#~ msgid "Save Cursor GUI runtime" +#~ msgstr "保存 Cursor GUI 运行时" + +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +msgid "Save Cursor SDK API key" +msgstr "保存 Cursor SDK API 密钥" #: src/renderer/commands/registry.ts msgid "Save File" @@ -8924,6 +9011,10 @@ msgstr "保存 MCP 服务器" msgid "Save shortcut" msgstr "保存快捷键" +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx +#~ msgid "Saved API key" +#~ msgstr "已保存的 API 密钥" + #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/SingleAgentSettings.tsx msgid "Saved credentials are shared across all environments." msgstr "保存的凭据在所有环境中共享。" @@ -9005,28 +9096,32 @@ msgid "Scroll to bottom" msgstr "滚动到底部" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK" -msgstr "SDK" +#~ msgid "SDK" +#~ msgstr "SDK" + +#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx +#~ msgid "SDK authentication" +#~ msgstr "SDK 身份验证" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK installed" msgstr "SDK 已安装" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." -msgstr "SDK 模式需要单独安装 @cursor/sdk 软件包并设置 CURSOR_API_KEY。它不会使用 Cursor Agent CLI 的登录信息。" +#~ msgid "SDK mode requires a separately installed @cursor/sdk package and CURSOR_API_KEY. It does not use the Cursor Agent CLI login." +#~ msgstr "SDK 模式需要单独安装 @cursor/sdk 软件包并设置 CURSOR_API_KEY。它不会使用 Cursor Agent CLI 的登录信息。" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts msgid "SDK not installed" msgstr "SDK 未安装" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path" -msgstr "SDK 软件包路径" +#~ msgid "SDK package path" +#~ msgstr "SDK 软件包路径" #: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx -msgid "SDK package path (optional)" -msgstr "SDK 软件包路径(可选)" +#~ msgid "SDK package path (optional)" +#~ msgstr "SDK 软件包路径(可选)" #: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts #: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts @@ -10063,6 +10158,8 @@ msgid "Support:" msgstr "支持:" #: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx +#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx +#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/ModelVisibilityDropdown.tsx msgid "Supports Fast mode" msgstr "支持快速模式" @@ -10491,7 +10588,6 @@ msgstr "这些内置 MCP 服务器由 OpenCode 线程共享。保存后会更新 #: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx #: src/renderer/components/thread/ChatPane/parts/items/ReasoningInline.tsx #: src/renderer/components/thread/ThreadComposer.tsx -#: src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.tsx msgid "Thinking" msgstr "思考" @@ -11265,6 +11361,7 @@ msgid "update" msgstr "更新" #: src/renderer/components/thread/ThreadAgentUpdateDock.tsx +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx #: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings/parts/HookPluginSettings.tsx msgid "Update" msgstr "更新" @@ -11287,6 +11384,7 @@ msgid "Update checks are not available in development mode." msgstr "开发模式下无法检查更新。" #: src/renderer/views/SettingsOverlay/parts/cursorRuntimeInstall.ts +#: src/renderer/views/SettingsOverlay/parts/CursorSdkRuntimeSetup.tsx msgid "Update Cursor SDK" msgstr "更新 Cursor SDK" diff --git a/src/renderer/state/sharedSettingsStore.ts b/src/renderer/state/sharedSettingsStore.ts index 0f990637..b1e7c1ee 100644 --- a/src/renderer/state/sharedSettingsStore.ts +++ b/src/renderer/state/sharedSettingsStore.ts @@ -65,6 +65,7 @@ interface SharedSettingsState extends SharedSettings { ) => void; setWslConflictResolverPresentationMode: (mode: ThreadPresentationMode) => void; setAgentSetting: (agentKind: string, key: string, value: boolean | string) => void; + setAgentSecretSetting: (agentKind: string, key: string, value: string) => Promise; setModelHidden: (agentKind: string, modelId: string, hidden: boolean) => void; setHiddenModels: (agentKind: string, hiddenIds: string[]) => void; setAgentDisabled: (agentKind: string, disabled: boolean) => void; @@ -362,6 +363,16 @@ export const useSharedSettings = create()((set, get) => ({ set({ agentSettings: { ...current, [agentKind]: agentValues } }); persistSettings(selectSharedSettings(get())); }, + setAgentSecretSetting: async (agentKind, key, value) => { + const { storedValue } = await readBridge().setAgentSecretSetting({ agentKind, key, value }); + const current = get().agentSettings; + const agentValues = { ...current[agentKind] }; + if (storedValue === null) delete agentValues[key]; + else agentValues[key] = storedValue; + set({ agentSettings: { ...current, [agentKind]: agentValues } }); + cacheSettingsSnapshot(selectSharedSettings(get())); + return storedValue !== null; + }, setModelHidden: (agentKind, modelId, hidden) => { const current = get().hiddenModels; const list = current[agentKind] ?? []; diff --git a/src/renderer/views/RemoteProjectModal/remoteProjectSelection.test.ts b/src/renderer/views/RemoteProjectModal/remoteProjectSelection.test.ts index a784a803..c18dc43e 100644 --- a/src/renderer/views/RemoteProjectModal/remoteProjectSelection.test.ts +++ b/src/renderer/views/RemoteProjectModal/remoteProjectSelection.test.ts @@ -104,4 +104,25 @@ describe("remote project agent selection", () => { sandboxMode: "workspace-write", }); }); + + it("falls back to advertised options when provider defaults are stale", () => { + const status = makeStatus("qoder", "Ubuntu", { + capabilities: { + ...makeStatus("qoder", "Ubuntu").capabilities, + approvalPolicies: [ + { id: "default", label: "Default" }, + { id: "acceptEdits", label: "Accept Edits" }, + ], + defaultApprovalPolicy: "bypassPermissions", + sandboxModes: [{ id: "workspace-write", label: "Workspace write" }], + defaultSandboxMode: "danger-full-access", + }, + }); + + expect(buildRemoteThreadConfig(status, "model-a", "")).toEqual({ + model: "model-a", + approvalPolicy: "default", + sandboxMode: "workspace-write", + }); + }); }); diff --git a/src/renderer/views/RemoteProjectModal/remoteProjectSelection.ts b/src/renderer/views/RemoteProjectModal/remoteProjectSelection.ts index 73f658f0..263ae775 100644 --- a/src/renderer/views/RemoteProjectModal/remoteProjectSelection.ts +++ b/src/renderer/views/RemoteProjectModal/remoteProjectSelection.ts @@ -8,6 +8,16 @@ import { getProjectAgentStatuses } from "@/shared/agentStatus"; import { agentStatusForPresentation } from "@/shared/agentSelection"; import type { RemoteAgentStatuses } from "@/shared/remote"; +function resolveDefaultOption( + options: readonly { id: string }[], + preferred: string | undefined, +): string | undefined { + if (preferred && options.some((option) => option.id === preferred)) { + return preferred; + } + return options[0]?.id; +} + export function remoteProjectPresentationModes( status: AgentStatus | undefined, ): ThreadPresentationMode[] { @@ -49,15 +59,21 @@ export function buildRemoteThreadConfig( effort: string, ): ThreadConfig { const capabilities = status.capabilities; + const approvalPolicy = resolveDefaultOption( + capabilities.approvalPolicies, + capabilities.defaultApprovalPolicy, + ); + const sandboxMode = resolveDefaultOption( + capabilities.sandboxModes, + capabilities.defaultSandboxMode, + ); return { model, ...(effort ? { effort } : {}), - ...(capabilities.defaultApprovalPolicy - ? { approvalPolicy: capabilities.defaultApprovalPolicy } - : {}), + ...(approvalPolicy ? { approvalPolicy } : {}), ...(capabilities.defaultApprovalsReviewer !== undefined ? { approvalsReviewer: capabilities.defaultApprovalsReviewer } : {}), - ...(capabilities.defaultSandboxMode ? { sandboxMode: capabilities.defaultSandboxMode } : {}), + ...(sandboxMode ? { sandboxMode } : {}), }; } diff --git a/src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.test.tsx b/src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.test.tsx index 1fe363d8..ba7571d3 100644 --- a/src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.test.tsx +++ b/src/renderer/views/SettingsOverlay/parts/CursorProviderSettings.test.tsx @@ -42,14 +42,14 @@ vi.mock("@heroui/react", async () => { ); } - function Radio(props: { children?: ReactNode; value: string }) { + function Radio(props: { children?: ReactNode; isDisabled?: boolean; value: string }) { const group = React.useContext(RadioGroupContext); return (