Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ expression: "rendered.lines.iter().map(rendered_line_text).collect::<Vec<_>>().j
latest user question

• Final answer:

Pattern Outcome
━━━━━━━━━━━━ ━━━━━━━━━━━
Table tail Preserved
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ expression: "rendered.lines.iter().map(rendered_line_text).collect::<Vec<_>>().j
latest user question

• Final answer:

Pattern Outcome
━━━━━━━━━━━━ ━━━━━━━━━━━
Table tail Preserved
37 changes: 22 additions & 15 deletions codex-rs/tui/src/history_cell/messages.rs
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,21 @@ impl AgentMarkdownCell {
}
}

fn normalize_whitespace_only_hyperlink_lines(mut lines: Vec<HyperlinkLine>) -> Vec<HyperlinkLine> {
for line in &mut lines {
if line
.line
.spans
.iter()
.all(|span| span.content.chars().all(char::is_whitespace))
{
line.line = Line::default().style(line.line.style);
line.hyperlinks.clear();
}
}
lines
}

impl HistoryCell for AgentMarkdownCell {
fn display_lines(&self, width: u16) -> Vec<Line<'static>> {
visible_lines(self.display_hyperlink_lines(width))
Expand All @@ -432,7 +447,11 @@ impl HistoryCell for AgentMarkdownCell {
Some(self.cwd.as_path()),
self.inline_visualization_context.as_ref(),
);
prefix_hyperlink_lines(lines, "• ".dim(), " ".into())
normalize_whitespace_only_hyperlink_lines(prefix_hyperlink_lines(
lines,
"• ".dim(),
" ".into(),
))
};

if let Some(rendered_lines) = &self.rendered_lines {
Expand Down Expand Up @@ -487,27 +506,15 @@ impl HistoryCell for StreamingAgentTailCell {
fn display_hyperlink_lines(&self, _width: u16) -> Vec<HyperlinkLine> {
// Tail lines are already rendered at the controller's current stream width.
// Re-wrapping them here can split table borders and produce malformed in-flight rows.
let mut lines = prefix_hyperlink_lines(
normalize_whitespace_only_hyperlink_lines(prefix_hyperlink_lines(
self.lines.clone(),
if self.is_first_line {
"• ".dim()
} else {
" ".into()
},
" ".into(),
);
for line in &mut lines {
if line
.line
.spans
.iter()
.all(|span| span.content.chars().all(char::is_whitespace))
{
line.line = Line::default().style(line.line.style);
line.hyperlinks.clear();
}
}
lines
))
}

fn transcript_hyperlink_lines(&self, width: u16) -> Vec<HyperlinkLine> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ rich before:

• - first item
- second item

Col Value
━━━━━━ ━━━━━━━
code x = 1

copy me
• Called
└ workspace.inspect({"path":"README.md
Expand Down Expand Up @@ -45,11 +45,11 @@ rich after:

• - first item
- second item

Col Value
━━━━━━ ━━━━━━━
code x = 1

copy me
• Called
└ workspace.inspect({"path":"README.md
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ source: tui/src/inline_visualization_tests.rs
expression: text
---
• Fenced:

::codex-inline-vis{file="chart.html"}

Indented:

::codex-inline-vis{file="chart.html"}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ source: tui/src/inline_visualization_tests.rs
expression: snapshot_text
---
• Before

Open chart visualization in the browser
file://<viewer-path>

After
Loading