Merge branch 'agentydragon-18-chat-ui-textarea-overlay-border-fix' into agentydragon

# Conflicts:
#	agentydragon/tasks/18-chat-ui-textarea-overlay-border-fix.md
This commit is contained in:
Rai (Michael Pokorny)
2025-06-24 22:34:25 -07:00
4 changed files with 13 additions and 7 deletions

View File

@@ -1,8 +1,8 @@
+++
id = "18"
title = "Chat UI Textarea Overlay and Border Styling Fix"
status = "Not started"
dependencies = "" # No prerequisites
status = "Done"
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

View File

@@ -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),
);

View File

@@ -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);
}
}

View File

@@ -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);