@@ -1219,6 +1229,7 @@ export const ChatRowContent = ({
{t("chat:feedback.youSaid")}
+ {timestampElement}
{icon}
{title}
+ {timestampElement}
diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx
index 6331f13edf9..91a10f3b875 100644
--- a/webview-ui/src/components/settings/SettingsView.tsx
+++ b/webview-ui/src/components/settings/SettingsView.tsx
@@ -209,6 +209,7 @@ const SettingsView = forwardRef
(({ onDone, t
openRouterImageGenerationSelectedModel,
reasoningBlockCollapsed,
enterBehavior,
+ showTimestamps,
includeCurrentTime,
includeCurrentCost,
maxGitStatusFiles,
@@ -830,6 +831,7 @@ const SettingsView = forwardRef(({ onDone, t
)}
diff --git a/webview-ui/src/components/settings/UISettings.tsx b/webview-ui/src/components/settings/UISettings.tsx
index b4e5a4e861a..a97e169420f 100644
--- a/webview-ui/src/components/settings/UISettings.tsx
+++ b/webview-ui/src/components/settings/UISettings.tsx
@@ -12,12 +12,14 @@ import { ExtensionStateContextType } from "@/context/ExtensionStateContext"
interface UISettingsProps extends HTMLAttributes {
reasoningBlockCollapsed: boolean
enterBehavior: "send" | "newline"
+ showTimestamps: boolean
setCachedStateField: SetCachedStateField
}
export const UISettings = ({
reasoningBlockCollapsed,
enterBehavior,
+ showTimestamps,
setCachedStateField,
...props
}: UISettingsProps) => {
@@ -48,6 +50,15 @@ export const UISettings = ({
})
}
+ const handleShowTimestampsChange = (value: boolean) => {
+ setCachedStateField("showTimestamps", value)
+
+ // Track telemetry event
+ telemetryClient.capture("ui_settings_show_timestamps_changed", {
+ enabled: value,
+ })
+ }
+
return (
@@ -86,6 +97,19 @@ export const UISettings = ({
{t("settings:ui.requireCtrlEnterToSend.description", { primaryMod })}
+
+ {/* Show Timestamps Setting */}
+
+
handleShowTimestampsChange(e.target.checked)}
+ data-testid="show-timestamps-checkbox">
+ {t("settings:ui.showTimestamps.label")}
+
+
+ {t("settings:ui.showTimestamps.description")}
+
+
diff --git a/webview-ui/src/components/settings/__tests__/UISettings.spec.tsx b/webview-ui/src/components/settings/__tests__/UISettings.spec.tsx
index 2a21a410b38..35b1668fa10 100644
--- a/webview-ui/src/components/settings/__tests__/UISettings.spec.tsx
+++ b/webview-ui/src/components/settings/__tests__/UISettings.spec.tsx
@@ -6,6 +6,7 @@ describe("UISettings", () => {
const defaultProps = {
reasoningBlockCollapsed: false,
enterBehavior: "send" as const,
+ showTimestamps: false,
setCachedStateField: vi.fn(),
}
diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx
index 3fe5340bdbc..12e8b0036c4 100644
--- a/webview-ui/src/context/ExtensionStateContext.tsx
+++ b/webview-ui/src/context/ExtensionStateContext.tsx
@@ -163,6 +163,8 @@ export interface ExtensionStateContextType extends ExtensionState {
setIncludeCurrentTime: (value: boolean) => void
includeCurrentCost?: boolean
setIncludeCurrentCost: (value: boolean) => void
+ showTimestamps?: boolean
+ setShowTimestamps: (value: boolean) => void
}
export const ExtensionStateContext = createContext