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"