From c55351751eee9e61458c3965051da25f74a81711 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Mon, 19 Jan 2026 14:10:02 -0500 Subject: [PATCH 1/2] tui: fix datetime alignment in dialogs - Add wrapMode="none" to prevent extra line for long titles in DialogSelect - Pad single-digit hours with leading space for consistent width (e.g., " 9:38 PM") --- packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx | 1 + packages/opencode/src/util/locale.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx index 5c37a493dfa..a8671f46699 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx @@ -337,6 +337,7 @@ function Option(props: { fg={props.active ? fg : props.current ? theme.primary : theme.text} attributes={props.active ? TextAttributes.BOLD : undefined} overflow="hidden" + wrapMode="none" paddingLeft={3} > {Locale.truncate(props.title, 61)} diff --git a/packages/opencode/src/util/locale.ts b/packages/opencode/src/util/locale.ts index 653da09a0b7..a0d963315d5 100644 --- a/packages/opencode/src/util/locale.ts +++ b/packages/opencode/src/util/locale.ts @@ -5,7 +5,10 @@ export namespace Locale { export function time(input: number): string { const date = new Date(input) - return date.toLocaleTimeString(undefined, { timeStyle: "short" }) + const str = date.toLocaleTimeString(undefined, { timeStyle: "short" }) + // Pad single-digit hours with leading space for alignment (e.g., "9:38 PM" -> " 9:38 PM") + if (/^\d:/.test(str)) return " " + str + return str } export function datetime(input: number): string { From e5dcfbb4626d52b40c95735eb44d9fd9fdbf7555 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Mon, 19 Jan 2026 14:31:44 -0500 Subject: [PATCH 2/2] fix: revert unnecessary change --- packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx index a8671f46699..5c37a493dfa 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx @@ -337,7 +337,6 @@ function Option(props: { fg={props.active ? fg : props.current ? theme.primary : theme.text} attributes={props.active ? TextAttributes.BOLD : undefined} overflow="hidden" - wrapMode="none" paddingLeft={3} > {Locale.truncate(props.title, 61)}