tui: fix backtracking past /status (#6335)

Fixes https://github.com/openai/codex/issues/4722

Supersedes https://github.com/openai/codex/pull/5058

Ideally we'd have a clearer way of separating history per-session than
by detecting a specific history cell type, but this is a fairly minimal
fix for now.
This commit is contained in:
Jeremy Rose
2025-11-06 14:50:07 -08:00
committed by GitHub
parent 65d53fd4b1
commit 1bd2d7a659
2 changed files with 23 additions and 6 deletions

View File

@@ -559,11 +559,28 @@ pub(crate) fn padded_emoji(emoji: &str) -> String {
format!("{emoji}\u{200A}")
}
#[derive(Debug)]
pub struct SessionInfoCell(CompositeHistoryCell);
impl HistoryCell for SessionInfoCell {
fn display_lines(&self, width: u16) -> Vec<Line<'static>> {
self.0.display_lines(width)
}
fn desired_height(&self, width: u16) -> u16 {
self.0.desired_height(width)
}
fn transcript_lines(&self, width: u16) -> Vec<Line<'static>> {
self.0.transcript_lines(width)
}
}
pub(crate) fn new_session_info(
config: &Config,
event: SessionConfiguredEvent,
is_first_event: bool,
) -> CompositeHistoryCell {
) -> SessionInfoCell {
let SessionConfiguredEvent {
model,
reasoning_effort,
@@ -573,7 +590,7 @@ pub(crate) fn new_session_info(
initial_messages: _,
rollout_path: _,
} = event;
if is_first_event {
SessionInfoCell(if is_first_event {
// Header box rendered as history (so it appears at the very top)
let header = SessionHeaderHistoryCell::new(
model,
@@ -632,7 +649,7 @@ pub(crate) fn new_session_info(
CompositeHistoryCell {
parts: vec![Box::new(PlainHistoryCell { lines })],
}
}
})
}
pub(crate) fn new_user_prompt(message: String) -> UserHistoryCell {