From 5720fabdbc359ae0402413cd9097d0b69eb17623 Mon Sep 17 00:00:00 2001 From: Tyler Koenig Date: Sat, 20 Jun 2026 19:13:37 -0400 Subject: [PATCH] fix(tui): limit sidebar height to match table, fix detail clipping Log sidebar was rendering all lines regardless of table height. When detail panel was open and table shrank, the sidebar stayed tall, pushing the detail panel past MaxHeight (clipped to empty). Now sidebar accepts a maxLines parameter capped to table row count. --- internal/tui/tab_logs_sidebar.go | 5 ++++- internal/tui/view_dashboard.go | 2 +- internal/tui/view_detail_inline.go | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/internal/tui/tab_logs_sidebar.go b/internal/tui/tab_logs_sidebar.go index e21c6cd..ec012b3 100644 --- a/internal/tui/tab_logs_sidebar.go +++ b/internal/tui/tab_logs_sidebar.go @@ -52,7 +52,7 @@ func (m Model) renderCompactLogLine(line string, maxW int) string { return " " + tag + " " + msg } -func (m Model) viewLogsSidebar(width int) string { +func (m Model) viewLogsSidebar(width, maxLines int) string { logs := m.engine.GetLogs() if len(logs) == 0 { return m.st.subtleStyle.Render(" No logs yet") @@ -69,6 +69,9 @@ func (m Model) viewLogsSidebar(width int) string { continue } lines = append(lines, m.renderCompactLogLine(line, width)) + if maxLines > 0 && len(lines) >= maxLines { + break + } } return "\n" + sidebarStyle.Render(strings.Join(lines, "\n")) diff --git a/internal/tui/view_dashboard.go b/internal/tui/view_dashboard.go index 10a13fe..acf488a 100644 --- a/internal/tui/view_dashboard.go +++ b/internal/tui/view_dashboard.go @@ -160,7 +160,7 @@ func (m Model) viewDashboard() string { m.contentWidth = leftW monitors := m.viewSitesTab() left := lipgloss.NewStyle().Width(leftW).Render(monitors) - sidebar := m.viewLogsSidebar(rightW) + sidebar := m.viewLogsSidebar(rightW, m.maxTableRows+chromeTable) right := lipgloss.NewStyle().Width(rightW).Render(sidebar) top := lipgloss.JoinHorizontal(lipgloss.Top, left, right) if m.detailOpen { diff --git a/internal/tui/view_detail_inline.go b/internal/tui/view_detail_inline.go index 49d1ac4..c28ea29 100644 --- a/internal/tui/view_detail_inline.go +++ b/internal/tui/view_detail_inline.go @@ -18,8 +18,8 @@ func (m Model) viewDetailInline(width int) string { var b strings.Builder - title := m.st.dangerStyle.Render("▶ " + site.Name) - b.WriteString(title + "\n") + title := m.st.titleStyle.Render(site.Name) + b.WriteString(" " + title + "\n") divW := width - 4 if divW < 20 {