From e3376ad117f8cfd267fa8a94221662b45e58d44a Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Sat, 21 Feb 2026 14:01:21 -0500 Subject: [PATCH] fix(ui): fix cases where compact header and footer bleed off screen (#2279) --- internal/ui/model/header.go | 18 ++++++++++-------- internal/ui/model/status.go | 4 +++- internal/ui/model/ui.go | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/internal/ui/model/header.go b/internal/ui/model/header.go index 92321d5d9cf67c96731fab102436f662f86cdc1b..24254a0f69e5803e4bcbe89274f21db5b04ef541 100644 --- a/internal/ui/model/header.go +++ b/internal/ui/model/header.go @@ -17,10 +17,11 @@ import ( ) const ( - headerDiag = "╱" - minHeaderDiags = 3 - leftPadding = 1 - rightPadding = 1 + headerDiag = "╱" + minHeaderDiags = 3 + leftPadding = 1 + rightPadding = 1 + diagToDetailsSpacing = 1 // space between diagonal pattern and details section ) type header struct { @@ -73,7 +74,7 @@ func (h *header) drawHeader( var b strings.Builder b.WriteString(h.compactLogo) - availDetailWidth := width - leftPadding - rightPadding - lipgloss.Width(b.String()) - minHeaderDiags + availDetailWidth := width - leftPadding - rightPadding - lipgloss.Width(b.String()) - minHeaderDiags - diagToDetailsSpacing details := renderHeaderDetails( h.com, session, @@ -86,7 +87,8 @@ func (h *header) drawHeader( lipgloss.Width(b.String()) - lipgloss.Width(details) - leftPadding - - rightPadding + rightPadding - + diagToDetailsSpacing if remainingWidth > 0 { b.WriteString(t.Header.Diagonals.Render( @@ -143,8 +145,8 @@ func renderHeaderDetails( const dirTrimLimit = 4 cfg := com.Config() cwd := fsext.DirTrim(fsext.PrettyPath(cfg.WorkingDir()), dirTrimLimit) - cwd = ansi.Truncate(cwd, max(0, availWidth-lipgloss.Width(metadata)), "…") cwd = t.Header.WorkingDir.Render(cwd) - return cwd + metadata + result := cwd + metadata + return ansi.Truncate(result, max(0, availWidth), "…") } diff --git a/internal/ui/model/status.go b/internal/ui/model/status.go index 66dd4082bcc90470129b4a8ebf4ebd65e8567d6c..00f637832cf67a65efb66630308234f353169d3c 100644 --- a/internal/ui/model/status.go +++ b/internal/ui/model/status.go @@ -46,7 +46,9 @@ func (s *Status) ClearInfoMsg() { // SetWidth sets the width of the status bar and help view. func (s *Status) SetWidth(width int) { - s.help.SetWidth(width) + helpStyle := s.com.Styles.Status.Help + horizontalPadding := helpStyle.GetPaddingLeft() + helpStyle.GetPaddingRight() + s.help.SetWidth(width - horizontalPadding) } // ShowingAll returns whether the full help view is shown. diff --git a/internal/ui/model/ui.go b/internal/ui/model/ui.go index 194fa704991b40170d945106bf502a58b98d5f72..8ee3a36ad680ee12c2087dcc64eda6c3b6675215 100644 --- a/internal/ui/model/ui.go +++ b/internal/ui/model/ui.go @@ -1815,7 +1815,7 @@ func (m *UI) drawHeader(scr uv.Screen, area uv.Rectangle) { m.session, m.isCompact, m.detailsOpen, - m.width, + area.Dx(), ) }