From 30deca32572a3c2c70d2af732a8bf9d91c84aef0 Mon Sep 17 00:00:00 2001 From: Vsevolod Volkov <73965070+StLyn4@users.noreply.github.com> Date: Sun, 19 Oct 2025 15:50:06 +0200 Subject: [PATCH] feat: add privacy controls for time and timezone in context (#8731) Signed-off-by: Vsevolod Volkov <73965070+StLyn4@users.noreply.github.com> --- packages/types/src/global-settings.ts | 14 ++++++++ src/core/environment/getEnvironmentDetails.ts | 26 +++++++++----- src/core/webview/ClineProvider.ts | 6 ++++ .../webview/__tests__/ClineProvider.spec.ts | 2 ++ src/core/webview/webviewMessageHandler.ts | 8 +++++ src/shared/ExtensionMessage.ts | 2 ++ src/shared/WebviewMessage.ts | 2 ++ .../settings/ContextManagementSettings.tsx | 35 +++++++++++++++++++ .../src/components/settings/SettingsView.tsx | 6 ++++ .../SettingsView.change-detection.spec.tsx | 2 ++ .../SettingsView.unsaved-changes.spec.tsx | 2 ++ .../src/context/ExtensionStateContext.tsx | 14 ++++++++ .../__tests__/ExtensionStateContext.spec.tsx | 2 ++ webview-ui/src/i18n/locales/ca/settings.json | 10 ++++++ webview-ui/src/i18n/locales/de/settings.json | 10 ++++++ webview-ui/src/i18n/locales/en/settings.json | 10 ++++++ webview-ui/src/i18n/locales/es/settings.json | 10 ++++++ webview-ui/src/i18n/locales/fr/settings.json | 10 ++++++ webview-ui/src/i18n/locales/hi/settings.json | 10 ++++++ webview-ui/src/i18n/locales/id/settings.json | 10 ++++++ webview-ui/src/i18n/locales/it/settings.json | 10 ++++++ webview-ui/src/i18n/locales/ja/settings.json | 10 ++++++ webview-ui/src/i18n/locales/ko/settings.json | 10 ++++++ webview-ui/src/i18n/locales/nl/settings.json | 10 ++++++ webview-ui/src/i18n/locales/pl/settings.json | 10 ++++++ .../src/i18n/locales/pt-BR/settings.json | 10 ++++++ webview-ui/src/i18n/locales/ru/settings.json | 10 ++++++ webview-ui/src/i18n/locales/tr/settings.json | 10 ++++++ webview-ui/src/i18n/locales/vi/settings.json | 10 ++++++ .../src/i18n/locales/zh-CN/settings.json | 10 ++++++ .../src/i18n/locales/zh-TW/settings.json | 10 ++++++ 31 files changed, 292 insertions(+), 9 deletions(-) diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index a56a00fc355a..5dad0c512ac8 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -89,6 +89,17 @@ export const globalSettingsSchema = z.object({ */ maxDiagnosticMessages: z.number().optional(), + /** + * Whether to include current time in environment details sent with each request + * @default true + */ + includeCurrentTime: z.boolean().optional(), + /** + * Whether to include timezone information when current time is included + * @default false + */ + includeTimezone: z.boolean().optional(), + browserToolEnabled: z.boolean().optional(), browserViewportSize: z.string().optional(), screenshotQuality: z.number().optional(), @@ -311,6 +322,9 @@ export const EVALS_SETTINGS: RooCodeSettings = { includeDiagnosticMessages: true, maxDiagnosticMessages: 50, + includeCurrentTime: true, + includeTimezone: false, + language: "en", telemetrySetting: "enabled", diff --git a/src/core/environment/getEnvironmentDetails.ts b/src/core/environment/getEnvironmentDetails.ts index c0139649ab54..ee95c33bb815 100644 --- a/src/core/environment/getEnvironmentDetails.ts +++ b/src/core/environment/getEnvironmentDetails.ts @@ -30,6 +30,8 @@ export async function getEnvironmentDetails(cline: Task, includeFileDetails: boo terminalOutputLineLimit = 500, terminalOutputCharacterLimit = DEFAULT_TERMINAL_OUTPUT_CHARACTER_LIMIT, maxWorkspaceFiles = 200, + includeCurrentTime = true, + includeTimezone = false, } = state ?? {} // It could be useful for cline to know if the user went from one or no @@ -190,15 +192,21 @@ export async function getEnvironmentDetails(cline: Task, includeFileDetails: boo details += terminalDetails } - // Add current time information with timezone. - const now = new Date() - - const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone - const timeZoneOffset = -now.getTimezoneOffset() / 60 // Convert to hours and invert sign to match conventional notation - const timeZoneOffsetHours = Math.floor(Math.abs(timeZoneOffset)) - const timeZoneOffsetMinutes = Math.abs(Math.round((Math.abs(timeZoneOffset) - timeZoneOffsetHours) * 60)) - const timeZoneOffsetStr = `${timeZoneOffset >= 0 ? "+" : "-"}${timeZoneOffsetHours}:${timeZoneOffsetMinutes.toString().padStart(2, "0")}` - details += `\n\n# Current Time\nCurrent time in ISO 8601 UTC format: ${now.toISOString()}\nUser time zone: ${timeZone}, UTC${timeZoneOffsetStr}` + // Add current time information (only if enabled). + if (includeCurrentTime) { + const now = new Date() + details += `\n\n# Current Time\nCurrent time in ISO 8601 UTC format: ${now.toISOString()}` + + // Add timezone information only if both includeCurrentTime and includeTimezone are enabled + if (includeTimezone) { + const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone + const timeZoneOffset = -now.getTimezoneOffset() / 60 // Convert to hours and invert sign to match conventional notation + const timeZoneOffsetHours = Math.floor(Math.abs(timeZoneOffset)) + const timeZoneOffsetMinutes = Math.abs(Math.round((Math.abs(timeZoneOffset) - timeZoneOffsetHours) * 60)) + const timeZoneOffsetStr = `${timeZoneOffset >= 0 ? "+" : "-"}${timeZoneOffsetHours}:${timeZoneOffsetMinutes.toString().padStart(2, "0")}` + details += `\nUser time zone: ${timeZone}, UTC${timeZoneOffsetStr}` + } + } // Add context tokens information. const { contextTokens, totalCost } = getApiMetrics(cline.clineMessages) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 91b868796689..1496f21687f5 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1808,6 +1808,8 @@ export class ClineProvider followupAutoApproveTimeoutMs, includeDiagnosticMessages, maxDiagnosticMessages, + includeCurrentTime, + includeTimezone, includeTaskHistoryInEnhance, taskSyncEnabled, remoteControlEnabled, @@ -1957,6 +1959,8 @@ export class ClineProvider followupAutoApproveTimeoutMs: followupAutoApproveTimeoutMs ?? 60000, includeDiagnosticMessages: includeDiagnosticMessages ?? true, maxDiagnosticMessages: maxDiagnosticMessages ?? 50, + includeCurrentTime: includeCurrentTime ?? true, + includeTimezone: includeTimezone ?? false, includeTaskHistoryInEnhance: includeTaskHistoryInEnhance ?? true, taskSyncEnabled, remoteControlEnabled, @@ -2168,6 +2172,8 @@ export class ClineProvider profileThresholds: stateValues.profileThresholds ?? {}, includeDiagnosticMessages: stateValues.includeDiagnosticMessages ?? true, maxDiagnosticMessages: stateValues.maxDiagnosticMessages ?? 50, + includeCurrentTime: stateValues.includeCurrentTime ?? true, + includeTimezone: stateValues.includeTimezone ?? false, includeTaskHistoryInEnhance: stateValues.includeTaskHistoryInEnhance ?? true, taskSyncEnabled, remoteControlEnabled: (() => { diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index bcc9d544c290..5d8a8ec5517f 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -543,6 +543,8 @@ describe("ClineProvider", () => { maxReadFileLine: 500, maxImageFileSize: 5, maxTotalImageSize: 20, + includeCurrentTime: true, + includeTimezone: false, cloudUserInfo: null, organizationAllowList: ORGANIZATION_ALLOW_ALL, autoCondenseContext: true, diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index af5f9925c353..4da9b5027478 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -1613,6 +1613,14 @@ export const webviewMessageHandler = async ( await updateGlobalState("maxDiagnosticMessages", message.value ?? 50) await provider.postStateToWebview() break + case "includeCurrentTime": + await updateGlobalState("includeCurrentTime", message.bool ?? true) + await provider.postStateToWebview() + break + case "includeTimezone": + await updateGlobalState("includeTimezone", message.bool ?? false) + await provider.postStateToWebview() + break case "setHistoryPreviewCollapsed": // Add the new case handler await updateGlobalState("historyPreviewCollapsed", message.bool ?? false) // No need to call postStateToWebview here as the UI already updated optimistically diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 66f389f81c10..0a90de680e6c 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -285,6 +285,8 @@ export type ExtensionState = Pick< | "profileThresholds" | "includeDiagnosticMessages" | "maxDiagnosticMessages" + | "includeCurrentTime" + | "includeTimezone" | "openRouterImageGenerationSelectedModel" | "includeTaskHistoryInEnhance" | "reasoningBlockCollapsed" diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index d43a2fce0434..d90d5175e8f7 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -175,6 +175,8 @@ export interface WebviewMessage { | "maxConcurrentFileReads" | "includeDiagnosticMessages" | "maxDiagnosticMessages" + | "includeCurrentTime" + | "includeTimezone" | "searchFiles" | "toggleApiConfigPin" | "setHistoryPreviewCollapsed" diff --git a/webview-ui/src/components/settings/ContextManagementSettings.tsx b/webview-ui/src/components/settings/ContextManagementSettings.tsx index 88484e1d63ba..eec2c30b2e75 100644 --- a/webview-ui/src/components/settings/ContextManagementSettings.tsx +++ b/webview-ui/src/components/settings/ContextManagementSettings.tsx @@ -27,6 +27,8 @@ type ContextManagementSettingsProps = HTMLAttributes & { includeDiagnosticMessages?: boolean maxDiagnosticMessages?: number writeDelayMs: number + includeCurrentTime?: boolean + includeTimezone?: boolean setCachedStateField: SetCachedStateField< | "autoCondenseContext" | "autoCondenseContextPercent" @@ -41,6 +43,8 @@ type ContextManagementSettingsProps = HTMLAttributes & { | "includeDiagnosticMessages" | "maxDiagnosticMessages" | "writeDelayMs" + | "includeCurrentTime" + | "includeTimezone" > } @@ -60,6 +64,8 @@ export const ContextManagementSettings = ({ includeDiagnosticMessages, maxDiagnosticMessages, writeDelayMs, + includeCurrentTime = true, + includeTimezone = false, className, ...props }: ContextManagementSettingsProps) => { @@ -356,6 +362,35 @@ export const ContextManagementSettings = ({ {t("settings:contextManagement.diagnostics.delayAfterWrite.description")} + +
+ setCachedStateField("includeCurrentTime", e.target.checked)} + data-testid="include-current-time-checkbox"> + + +
+ {t("settings:contextManagement.timeInfo.includeCurrentTime.description")} +
+
+ +
+ setCachedStateField("includeTimezone", e.target.checked)} + data-testid="include-timezone-checkbox"> + + +
+ {t("settings:contextManagement.timeInfo.includeTimezone.description")} +
+
(({ onDone, t followupAutoApproveTimeoutMs, includeDiagnosticMessages, maxDiagnosticMessages, + includeCurrentTime, + includeTimezone, includeTaskHistoryInEnhance, openRouterImageApiKey, openRouterImageGenerationSelectedModel, @@ -372,6 +374,8 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "maxConcurrentFileReads", value: cachedState.maxConcurrentFileReads ?? 5 }) vscode.postMessage({ type: "includeDiagnosticMessages", bool: includeDiagnosticMessages }) vscode.postMessage({ type: "maxDiagnosticMessages", value: maxDiagnosticMessages ?? 50 }) + vscode.postMessage({ type: "includeCurrentTime", bool: includeCurrentTime ?? true }) + vscode.postMessage({ type: "includeTimezone", bool: includeTimezone ?? false }) vscode.postMessage({ type: "currentApiConfigName", text: currentApiConfigName }) vscode.postMessage({ type: "updateExperimental", values: experiments }) vscode.postMessage({ type: "alwaysAllowModeSwitch", bool: alwaysAllowModeSwitch }) @@ -744,6 +748,8 @@ const SettingsView = forwardRef(({ onDone, t includeDiagnosticMessages={includeDiagnosticMessages} maxDiagnosticMessages={maxDiagnosticMessages} writeDelayMs={writeDelayMs} + includeCurrentTime={includeCurrentTime} + includeTimezone={includeTimezone} setCachedStateField={setCachedStateField} /> )} diff --git a/webview-ui/src/components/settings/__tests__/SettingsView.change-detection.spec.tsx b/webview-ui/src/components/settings/__tests__/SettingsView.change-detection.spec.tsx index 67bd068db582..14d7a1deec3c 100644 --- a/webview-ui/src/components/settings/__tests__/SettingsView.change-detection.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/SettingsView.change-detection.spec.tsx @@ -183,6 +183,8 @@ describe("SettingsView - Change Detection Fix", () => { followupAutoApproveTimeoutMs: undefined, includeDiagnosticMessages: false, maxDiagnosticMessages: 50, + includeCurrentTime: true, + includeTimezone: false, includeTaskHistoryInEnhance: true, openRouterImageApiKey: undefined, openRouterImageGenerationSelectedModel: undefined, diff --git a/webview-ui/src/components/settings/__tests__/SettingsView.unsaved-changes.spec.tsx b/webview-ui/src/components/settings/__tests__/SettingsView.unsaved-changes.spec.tsx index 6f7d01ee86b0..3d841bf6d25a 100644 --- a/webview-ui/src/components/settings/__tests__/SettingsView.unsaved-changes.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/SettingsView.unsaved-changes.spec.tsx @@ -193,6 +193,8 @@ describe("SettingsView - Unsaved Changes Detection", () => { followupAutoApproveTimeoutMs: undefined, includeDiagnosticMessages: false, maxDiagnosticMessages: 50, + includeCurrentTime: true, + includeTimezone: false, includeTaskHistoryInEnhance: true, openRouterImageApiKey: undefined, openRouterImageGenerationSelectedModel: undefined, diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index 542b2385c026..ee803254c67d 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -155,6 +155,10 @@ export interface ExtensionStateContextType extends ExtensionState { includeDiagnosticMessages?: boolean setIncludeDiagnosticMessages: (value: boolean) => void maxDiagnosticMessages?: number + includeCurrentTime?: boolean + setIncludeCurrentTime: (value: boolean) => void + includeTimezone?: boolean + setIncludeTimezone: (value: boolean) => void setMaxDiagnosticMessages: (value: number) => void includeTaskHistoryInEnhance?: boolean setIncludeTaskHistoryInEnhance: (value: boolean) => void @@ -264,6 +268,8 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode alwaysAllowUpdateTodoList: true, includeDiagnosticMessages: true, maxDiagnosticMessages: 50, + includeCurrentTime: true, // Default to including current time in requests + includeTimezone: false, // Default to NOT including timezone openRouterImageApiKey: "", openRouterImageGenerationSelectedModel: "", }) @@ -557,6 +563,14 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode setMaxDiagnosticMessages: (value) => { setState((prevState) => ({ ...prevState, maxDiagnosticMessages: value })) }, + includeCurrentTime: state.includeCurrentTime, + setIncludeCurrentTime: (value) => { + setState((prevState) => ({ ...prevState, includeCurrentTime: value })) + }, + includeTimezone: state.includeTimezone, + setIncludeTimezone: (value) => { + setState((prevState) => ({ ...prevState, includeTimezone: value })) + }, includeTaskHistoryInEnhance, setIncludeTaskHistoryInEnhance, } diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx index 33d7dc0ec7a5..5e189850ad76 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx @@ -211,6 +211,8 @@ describe("mergeExtensionState", () => { hasOpenedModeSelector: false, // Add the new required property maxImageFileSize: 5, maxTotalImageSize: 20, + includeCurrentTime: true, + includeTimezone: false, remoteControlEnabled: false, taskSyncEnabled: false, featureRoomoteControlEnabled: false, diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 611159069b29..5ce2675be1b3 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -596,6 +596,16 @@ "inheritDescription": "Aquest perfil hereta el llindar per defecte global ({{threshold}}%)", "usesGlobal": "(utilitza global {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "Inclou l'hora actual a les sol·licituds", + "description": "Quan està activat, la data i l'hora actuals s'inclouran al context enviat amb cada sol·licitud. Això pot ajudar la IA a proporcionar respostes conscients del temps." + }, + "includeTimezone": { + "label": "Inclou informació de zona horària", + "description": "Quan està activat, la informació de la vostra zona horària s'inclourà juntament amb l'hora actual. Això només està disponible quan 'Inclou l'hora actual a les sol·licituds' està activat." + } + }, "maxImageFileSize": { "label": "Mida màxima d'arxiu d'imatge", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 00827751b0fd..2589d6c3fd7c 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -596,6 +596,16 @@ "inheritDescription": "Dieses Profil erbt den globalen Standard-Schwellenwert ({{threshold}}%)", "usesGlobal": "(verwendet global {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "Aktuelle Uhrzeit in Anfragen einbeziehen", + "description": "Wenn aktiviert, werden das aktuelle Datum und die Uhrzeit in den Kontext aufgenommen, der mit jeder Anfrage gesendet wird. Dies kann der KI helfen, zeitbewusste Antworten zu liefern." + }, + "includeTimezone": { + "label": "Zeitzoneninformationen einbeziehen", + "description": "Wenn aktiviert, werden Ihre Zeitzoneninformationen zusammen mit der aktuellen Uhrzeit einbezogen. Dies ist nur verfügbar, wenn 'Aktuelle Uhrzeit in Anfragen einbeziehen' aktiviert ist." + } + }, "maxImageFileSize": { "label": "Maximale Bilddateigröße", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index dfccc49cc4ce..a5c87732d9d6 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -610,6 +610,16 @@ "profileDescription": "Custom threshold for this profile only (overrides global default)", "inheritDescription": "This profile inherits the global default threshold ({{threshold}}%)", "usesGlobal": "(uses global {{threshold}}%)" + }, + "timeInfo": { + "includeCurrentTime": { + "label": "Include current time in requests", + "description": "When enabled, the current date and time will be included in the context sent with each request. This can help the AI provide time-aware responses." + }, + "includeTimezone": { + "label": "Include timezone information", + "description": "When enabled, your timezone information will be included along with the current time. This is only available when 'Include current time in requests' is enabled." + } } }, "terminal": { diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index c1271df82740..43a9fb090c49 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -605,6 +605,16 @@ "profileDescription": "Umbral personalizado solo para este perfil (anula el predeterminado global)", "inheritDescription": "Este perfil hereda el umbral predeterminado global ({{threshold}}%)", "usesGlobal": "(usa global {{threshold}}%)" + }, + "timeInfo": { + "includeCurrentTime": { + "label": "Incluir hora actual en las solicitudes", + "description": "Cuando está habilitado, la fecha y hora actual se incluirán en el contexto enviado con cada solicitud. Esto puede ayudar a la IA a proporcionar respuestas conscientes del tiempo." + }, + "includeTimezone": { + "label": "Incluir información de zona horaria", + "description": "Cuando está habilitado, la información de su zona horaria se incluirá junto con la hora actual. Esto solo está disponible cuando 'Incluir hora actual en las solicitudes' está habilitado." + } } }, "terminal": { diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index abcf401d6402..0a5aa19b0bdf 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -605,6 +605,16 @@ "profileDescription": "Seuil personnalisé pour ce profil uniquement (remplace le défaut global)", "inheritDescription": "Ce profil hérite du seuil par défaut global ({{threshold}}%)", "usesGlobal": "(utilise global {{threshold}}%)" + }, + "timeInfo": { + "includeCurrentTime": { + "label": "Inclure l'heure actuelle dans les requêtes", + "description": "Lorsqu'activé, la date et l'heure actuelles seront incluses dans le contexte envoyé avec chaque requête. Cela peut aider l'IA à fournir des réponses tenant compte du temps." + }, + "includeTimezone": { + "label": "Inclure les informations de fuseau horaire", + "description": "Lorsqu'activé, les informations de votre fuseau horaire seront incluses avec l'heure actuelle. Disponible uniquement lorsque 'Inclure l'heure actuelle dans les requêtes' est activé." + } } }, "terminal": { diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 975e35411eea..3042157d88d7 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "यह प्रोफ़ाइल वैश्विक डिफ़ॉल्ट सीमा को इनहेरिट करता है ({{threshold}}%)", "usesGlobal": "(वैश्विक {{threshold}}% का उपयोग करता है)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "अनुरोधों में वर्तमान समय शामिल करें", + "description": "सक्षम होने पर, प्रत्येक अनुरोध के साथ भेजे गए संदर्भ में वर्तमान तिथि और समय शामिल किया जाएगा। यह AI को समय-जागरूक प्रतिक्रियाएं प्रदान करने में मदद कर सकता है।" + }, + "includeTimezone": { + "label": "समय क्षेत्र जानकारी शामिल करें", + "description": "सक्षम होने पर, आपकी समय क्षेत्र जानकारी वर्तमान समय के साथ शामिल की जाएगी। यह केवल तभी उपलब्ध है जब 'अनुरोधों में वर्तमान समय शामिल करें' सक्षम हो।" + } + }, "maxImageFileSize": { "label": "अधिकतम छवि फ़ाइल आकार", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index aa2c1172119a..95ddcc25a73c 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -579,6 +579,16 @@ "inheritDescription": "Profil ini mewarisi ambang batas default global ({{threshold}}%)", "usesGlobal": "(menggunakan global {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "Sertakan waktu saat ini dalam permintaan", + "description": "Ketika diaktifkan, tanggal dan waktu saat ini akan disertakan dalam konteks yang dikirim dengan setiap permintaan. Ini dapat membantu AI memberikan respons yang sadar waktu." + }, + "includeTimezone": { + "label": "Sertakan informasi zona waktu", + "description": "Ketika diaktifkan, informasi zona waktu Anda akan disertakan bersama dengan waktu saat ini. Ini hanya tersedia ketika 'Sertakan waktu saat ini dalam permintaan' diaktifkan." + } + }, "openTabs": { "label": "Batas konteks tab terbuka", "description": "Jumlah maksimum tab VSCode terbuka yang disertakan dalam konteks. Nilai yang lebih tinggi memberikan lebih banyak konteks tetapi meningkatkan penggunaan token." diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 6f2e06bb8fd6..a53b53374caf 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "Questo profilo eredita la soglia predefinita globale ({{threshold}}%)", "usesGlobal": "(usa globale {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "Includi ora corrente nelle richieste", + "description": "Quando abilitato, la data e l'ora correnti verranno incluse nel contesto inviato con ogni richiesta. Questo può aiutare l'IA a fornire risposte consapevoli del tempo." + }, + "includeTimezone": { + "label": "Includi informazioni sul fuso orario", + "description": "Quando abilitato, le informazioni sul tuo fuso orario verranno incluse insieme all'ora corrente. Disponibile solo quando 'Includi ora corrente nelle richieste' è abilitato." + } + }, "maxImageFileSize": { "label": "Dimensione massima file immagine", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index cc1ea09317eb..8900a32a837b 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "このプロファイルはグローバルデフォルトしきい値を継承します({{threshold}}%)", "usesGlobal": "(グローバル {{threshold}}% を使用)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "リクエストに現在時刻を含める", + "description": "有効にすると、各リクエストと共に送信されるコンテキストに現在の日時が含まれます。これにより、AIが時間を考慮した応答を提供するのに役立ちます。" + }, + "includeTimezone": { + "label": "タイムゾーン情報を含める", + "description": "有効にすると、現在時刻と共にタイムゾーン情報が含まれます。これは「リクエストに現在時刻を含める」が有効な場合にのみ使用できます。" + } + }, "maxImageFileSize": { "label": "最大画像ファイルサイズ", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index 61539cfc4d9f..02af6cd5bd22 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "이 프로필은 글로벌 기본 임계값을 상속합니다 ({{threshold}}%)", "usesGlobal": "(글로벌 {{threshold}}% 사용)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "요청에 현재 시간 포함", + "description": "활성화하면 각 요청과 함께 전송되는 컨텍스트에 현재 날짜와 시간이 포함됩니다. 이는 AI가 시간을 고려한 응답을 제공하는 데 도움이 될 수 있습니다." + }, + "includeTimezone": { + "label": "시간대 정보 포함", + "description": "활성화하면 현재 시간과 함께 시간대 정보가 포함됩니다. '요청에 현재 시간 포함'이 활성화된 경우에만 사용할 수 있습니다." + } + }, "maxImageFileSize": { "label": "최대 이미지 파일 크기", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index 41ee3e5910bb..5538779f0910 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -606,6 +606,16 @@ "profileDescription": "Aangepaste drempelwaarde alleen voor dit profiel (overschrijft globale standaard)", "inheritDescription": "Dit profiel erft de globale standaard drempelwaarde ({{threshold}}%)", "usesGlobal": "(gebruikt globaal {{threshold}}%)" + }, + "timeInfo": { + "includeCurrentTime": { + "label": "Huidige tijd opnemen in verzoeken", + "description": "Wanneer ingeschakeld, worden de huidige datum en tijd opgenomen in de context die met elk verzoek wordt verzonden. Dit kan de AI helpen om tijdsbewuste antwoorden te geven." + }, + "includeTimezone": { + "label": "Tijdzone-informatie opnemen", + "description": "Wanneer ingeschakeld, wordt uw tijdzone-informatie samen met de huidige tijd opgenomen. Dit is alleen beschikbaar wanneer 'Huidige tijd opnemen in verzoeken' is ingeschakeld." + } } }, "terminal": { diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 6862d6f7edda..c21aaec02bcc 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "Ten profil dziedziczy globalny domyślny próg ({{threshold}}%)", "usesGlobal": "(używa globalnego {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "Uwzględnij aktualny czas w żądaniach", + "description": "Gdy włączone, aktualna data i godzina zostaną uwzględnione w kontekście wysyłanym z każdym żądaniem. To może pomóc AI w dostarczaniu odpowiedzi świadomych czasu." + }, + "includeTimezone": { + "label": "Uwzględnij informacje o strefie czasowej", + "description": "Gdy włączone, informacje o Twojej strefie czasowej zostaną uwzględnione wraz z aktualnym czasem. Dostępne tylko gdy 'Uwzględnij aktualny czas w żądaniach' jest włączone." + } + }, "maxImageFileSize": { "label": "Maksymalny rozmiar pliku obrazu", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index b8184777acf0..f29b0e578400 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "Este perfil herda o limite padrão global ({{threshold}}%)", "usesGlobal": "(usa global {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "Incluir hora atual nas solicitações", + "description": "Quando ativado, a data e hora atuais serão incluídas no contexto enviado com cada solicitação. Isso pode ajudar a IA a fornecer respostas conscientes do tempo." + }, + "includeTimezone": { + "label": "Incluir informações de fuso horário", + "description": "Quando ativado, as informações do seu fuso horário serão incluídas junto com a hora atual. Disponível apenas quando 'Incluir hora atual nas solicitações' está ativado." + } + }, "maxImageFileSize": { "label": "Tamanho máximo do arquivo de imagem", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index bcbd72089a45..d22480b3895c 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "Этот профиль наследует глобальный порог по умолчанию ({{threshold}}%)", "usesGlobal": "(использует глобальный {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "Включать текущее время в запросы", + "description": "Если включено, текущая дата и время будут включены в контекст, отправляемый с каждым запросом. Это может помочь ИИ предоставлять ответы, учитывающие время." + }, + "includeTimezone": { + "label": "Включать информацию о часовом поясе", + "description": "Если включено, информация о вашем часовом поясе будет включена вместе с текущим временем. Доступно только при включенной опции 'Включать текущее время в запросы'." + } + }, "maxImageFileSize": { "label": "Максимальный размер файла изображения", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 4ac28f47d2f2..4799230252c8 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "Bu profil küresel varsayılan eşiği miras alır ({{threshold}}%)", "usesGlobal": "(küresel {{threshold}}% kullanır)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "İsteklere geçerli zamanı dahil et", + "description": "Etkinleştirildiğinde, her istekle birlikte gönderilen bağlama geçerli tarih ve saat dahil edilecektir. Bu, yapay zekanın zamana duyarlı yanıtlar vermesine yardımcı olabilir." + }, + "includeTimezone": { + "label": "Saat dilimi bilgisini dahil et", + "description": "Etkinleştirildiğinde, saat dilimi bilgileriniz geçerli zamanla birlikte dahil edilecektir. Bu yalnızca 'İsteklere geçerli zamanı dahil et' etkinleştirildiğinde kullanılabilir." + } + }, "maxImageFileSize": { "label": "Maksimum görüntü dosyası boyutu", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 4303325d068e..ed736700551e 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "Hồ sơ này kế thừa ngưỡng mặc định toàn cục ({{threshold}}%)", "usesGlobal": "(sử dụng toàn cục {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "Bao gồm thời gian hiện tại trong yêu cầu", + "description": "Khi được bật, ngày và giờ hiện tại sẽ được bao gồm trong ngữ cảnh được gửi với mỗi yêu cầu. Điều này có thể giúp AI cung cấp các phản hồi có nhận thức về thời gian." + }, + "includeTimezone": { + "label": "Bao gồm thông tin múi giờ", + "description": "Khi được bật, thông tin múi giờ của bạn sẽ được bao gồm cùng với thời gian hiện tại. Chỉ khả dụng khi 'Bao gồm thời gian hiện tại trong yêu cầu' được bật." + } + }, "maxImageFileSize": { "label": "Kích thước tối đa của tệp hình ảnh", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index f574106f4568..dd103c0bf8c0 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "此配置文件继承全局默认阈值({{threshold}}%)", "usesGlobal": "(使用全局 {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "在请求中包含当前时间", + "description": "启用后,当前日期和时间将包含在每个请求发送的上下文中。这可以帮助AI提供时间感知的响应。" + }, + "includeTimezone": { + "label": "包含时区信息", + "description": "启用后,您的时区信息将与当前时间一起包含。仅在启用「在请求中包含当前时间」时可用。" + } + }, "maxImageFileSize": { "label": "最大图像文件大小", "mb": "MB", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 67e8c43b60a9..16d7d5d91d13 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -597,6 +597,16 @@ "inheritDescription": "此檔案繼承全域預設閾值({{threshold}}%)", "usesGlobal": "(使用全域 {{threshold}}%)" }, + "timeInfo": { + "includeCurrentTime": { + "label": "在請求中包含當前時間", + "description": "啟用後,當前日期和時間將包含在每個請求發送的上下文中。這可以幫助AI提供時間感知的回應。" + }, + "includeTimezone": { + "label": "包含時區資訊", + "description": "啟用後,您的時區資訊將與當前時間一起包含。僅在啟用「在請求中包含當前時間」時可用。" + } + }, "maxImageFileSize": { "label": "最大圖片檔案大小", "mb": "MB",