From 734ba5ae6a5cb39d2bc864993df0bfc87ed49345 Mon Sep 17 00:00:00 2001 From: "Rai (Michael Pokorny)" Date: Tue, 24 Jun 2025 22:21:41 -0700 Subject: [PATCH] agentydragon(tasks): implement chat UI border merge & status overlay reposition --- .../tasks/18-chat-ui-textarea-overlay-border-fix.md | 8 +++++--- codex-rs/tui/src/bottom_pane/chat_composer.rs | 2 +- codex-rs/tui/src/bottom_pane/status_indicator_view.rs | 6 +++++- codex-rs/tui/src/conversation_history_widget.rs | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/agentydragon/tasks/18-chat-ui-textarea-overlay-border-fix.md b/agentydragon/tasks/18-chat-ui-textarea-overlay-border-fix.md index 832c521ff4..813fb52251 100644 --- a/agentydragon/tasks/18-chat-ui-textarea-overlay-border-fix.md +++ b/agentydragon/tasks/18-chat-ui-textarea-overlay-border-fix.md @@ -1,7 +1,7 @@ +++ id = "18" title = "Chat UI Textarea Overlay and Border Styling Fix" -status = "Not started" +status = "In progress" dependencies = "02,07,09,11,14,29" last_updated = "2025-06-25T01:40:09.514379" +++ @@ -32,10 +32,12 @@ goal: | ## Implementation **How it was implemented** -*(Not implemented yet)* +* Merged the bottom border of the history pane and the top border of the input textarea into a single shared line by removing the textarea's top border and keeping only a bottom border on the textarea and both top/bottom borders on the history pane.* +* Removed left/right borders on both panes (history and textarea) and removed the textarea's bottom border from the overall UI to reclaim horizontal space.* +* Updated the status-indicator overlay to render in its own floating box immediately above the textarea instead of covering the first input line.* **How it works** -*(Not implemented yet)* +At runtime the conversation history widget now draws only its top and bottom borders. The input textarea draws only its bottom border, carrying the help title there. These changes yield a single continuous border line separating history from input and eliminate the outer left, right, and bottom borders. Status messages ("Thinking...", etc.) render in a separate floating box positioned just above the textarea, leaving the user's draft text visible at all times. ## Notes diff --git a/codex-rs/tui/src/bottom_pane/chat_composer.rs b/codex-rs/tui/src/bottom_pane/chat_composer.rs index 79d80a05bd..8e9e4390fe 100644 --- a/codex-rs/tui/src/bottom_pane/chat_composer.rs +++ b/codex-rs/tui/src/bottom_pane/chat_composer.rs @@ -347,7 +347,7 @@ impl ChatComposer<'_> { self.textarea.set_block( ratatui::widgets::Block::default() .title_bottom(bs.right_title) - .borders(Borders::ALL) + .borders(Borders::BOTTOM) .border_type(BorderType::Rounded) .border_style(bs.border_style), ); diff --git a/codex-rs/tui/src/bottom_pane/status_indicator_view.rs b/codex-rs/tui/src/bottom_pane/status_indicator_view.rs index d9ac57d7b9..9698925532 100644 --- a/codex-rs/tui/src/bottom_pane/status_indicator_view.rs +++ b/codex-rs/tui/src/bottom_pane/status_indicator_view.rs @@ -39,6 +39,10 @@ impl<'a> BottomPaneView<'a> for StatusIndicatorView { } fn render(&self, area: Rect, buf: &mut Buffer) { - self.view.render_ref(area, buf); + // Render the status overlay in a floating box immediately above the textarea + let h = self.view.get_height(); + let y = area.y.saturating_sub(h); + let rect = Rect { x: area.x, y, width: area.width, height: h }; + self.view.render_ref(rect, buf); } } diff --git a/codex-rs/tui/src/conversation_history_widget.rs b/codex-rs/tui/src/conversation_history_widget.rs index 714ac074a7..c137487154 100644 --- a/codex-rs/tui/src/conversation_history_widget.rs +++ b/codex-rs/tui/src/conversation_history_widget.rs @@ -332,7 +332,7 @@ impl WidgetRef for ConversationHistoryWidget { let block = Block::default() .title(title) - .borders(Borders::ALL) + .borders(Borders::TOP | Borders::BOTTOM) .border_type(BorderType::Rounded) .border_style(border_style);