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 9f2008d2b5c1..f616dda01794 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 @@ -166,32 +166,59 @@ function UserMessage(props: { message: SessionMessageUser; index: number }) { customBorderChars={SplitBorder.customBorderChars} marginTop={props.index === 0 ? 0 : 1} flexShrink={0} + > + + + } + > + {props.message.text} + + + + + {(file) => ( + + {file.mime} + {file.name ?? file.uri} + + )} + + + {(agent) => ( + + agent + {agent.name} + + )} + + + + {Locale.todayTimeOrDateTimeCompact(props.message.time.created)} + + + ) +} + +function SyntheticMessage(props: { message: SessionMessageSynthetic; index: number }) { + const { theme } = useTheme() + return ( + + Synthetic {props.message.text} - - - - {(file) => ( - - {file.mime} - {file.name ?? file.uri} - - )} - - - {(agent) => ( - - agent - {agent.name} - - )} - - - ) } 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 4c5b4eef940e..ece21e764f45 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -1406,7 +1406,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 ec900b441679..4fc2bae00612 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"