From 35a534d7965c9d53a5036d57b86c08b9bad6e036 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Thu, 7 May 2026 13:23:23 -0400 Subject: [PATCH] fix: use compact datetime format for inline message timestamps Adds datetimeCompact() and todayTimeOrDateTimeCompact() variants without leading-space padding on single-digit days. Updates inline message timestamp callers to use the compact variants while dialogs continue using padded versions for column alignment. --- .../tui/feature-plugins/system/session-v2.tsx | 2 +- .../src/cli/cmd/tui/routes/session/index.tsx | 2 +- packages/opencode/src/util/locale.ts | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/feature-plugins/system/session-v2.tsx b/packages/opencode/src/cli/cmd/tui/feature-plugins/system/session-v2.tsx index 7270a9c3b7f7..be53cdf6f094 100644 --- a/packages/opencode/src/cli/cmd/tui/feature-plugins/system/session-v2.tsx +++ b/packages/opencode/src/cli/cmd/tui/feature-plugins/system/session-v2.tsx @@ -180,7 +180,7 @@ function UserMessage(props: { message: SessionMessageUser; index: number }) { - {Locale.todayTimeOrDateTime(props.message.time.created)} + {Locale.todayTimeOrDateTimeCompact(props.message.time.created)} ) diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx index d43edd2dd5d7..584701c47a02 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -1324,7 +1324,7 @@ function UserMessage(props: { - {Locale.todayTimeOrDateTime(props.message.time.created)} + {Locale.todayTimeOrDateTimeCompact(props.message.time.created)} diff --git a/packages/opencode/src/util/locale.ts b/packages/opencode/src/util/locale.ts index 49f60e931190..06ef1a4dde16 100644 --- a/packages/opencode/src/util/locale.ts +++ b/packages/opencode/src/util/locale.ts @@ -27,6 +27,29 @@ export function todayTimeOrDateTime(input: number): string { } } +export function datetimeCompact(input: number): string { + const date = new Date(input) + const localTime = time(input) + const month = date.getMonth() + 1 + const day = date.getDate() + const year = date.getFullYear() + const localDate = `${month}/${day}/${year}` + return `${localTime} ${localDate}` +} + +export function todayTimeOrDateTimeCompact(input: number): string { + const date = new Date(input) + const now = new Date() + const isToday = + date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate() + + if (isToday) { + return time(input) + } else { + return datetimeCompact(input) + } +} + export function number(num: number): string { if (num >= 1000000) { return (num / 1000000).toFixed(1) + "M"