From a6ab77bca2a63575a2b0f5f7d11d411365582c55 Mon Sep 17 00:00:00 2001 From: Yaroslav Volovich Date: Mon, 23 Feb 2026 19:37:15 +0000 Subject: [PATCH] Pad /fork picker turn labels --- codex-rs/tui/src/fork_turn_picker.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/codex-rs/tui/src/fork_turn_picker.rs b/codex-rs/tui/src/fork_turn_picker.rs index bcb5725640..c2a8e550f7 100644 --- a/codex-rs/tui/src/fork_turn_picker.rs +++ b/codex-rs/tui/src/fork_turn_picker.rs @@ -406,6 +406,7 @@ impl ForkTurnPickerScreen { let visible_entries = (visible_rows / 2).max(1); let mut lines = Vec::with_capacity(visible_rows); let scroll_top = self.effective_scroll_top(visible_entries); + let label_digits = self.max_display_label_digits(); let end = self .effective_scroll_top(visible_entries) .saturating_add(visible_entries) @@ -413,7 +414,7 @@ impl ForkTurnPickerScreen { for idx in scroll_top..end { let is_selected = idx == self.selected; let display_number = self.display_turn_number(idx); - let label = format!("{display_number}:"); + let label = format!("{display_number:>label_digits$}:"); let user_prefix = format!("{} {} ", if is_selected { "›" } else { " " }, label); let user_width = usize::from(inner.width).saturating_sub(user_prefix.len()); let user_text = if user_width == 0 { @@ -510,6 +511,10 @@ impl ForkTurnPickerScreen { fn display_turn_number(&self, idx: usize) -> usize { idx.saturating_add(1) } + + fn max_display_label_digits(&self) -> usize { + self.turns.len().max(1).to_string().len() + } } impl WidgetRef for &ForkTurnPickerScreen {