From 2f384926f3609738df7724a8bf58ac1b90d38d9d Mon Sep 17 00:00:00 2001 From: euxaristia <25621994+euxaristia@users.noreply.github.com> Date: Fri, 31 Jul 2026 08:49:50 -0400 Subject: [PATCH 1/2] fix(tui): fill alt-screen frame with theme panel background Blank and cleared cells fell back to the terminal's own default background instead of the theme's panel color, flashing white on light themes during resize or when ClearScreen erases the frame. Wrap the rendered content in zeroTheme.panel sized to the full frame so every cell is explicitly painted. --- internal/tui/model.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/internal/tui/model.go b/internal/tui/model.go index 239a08dd5..56f55bc6e 100644 --- a/internal/tui/model.go +++ b/internal/tui/model.go @@ -2763,6 +2763,17 @@ func (m model) View() tea.View { // background behind in the user's scrollback after exit. if m.altScreen { view.BackgroundColor = zeroTheme.bgPanel + // Also fill the frame content with the panel surface, not just the + // terminal's default background. Relying on view.BackgroundColor alone + // leaves blank/padding cells (and anything ClearScreen erases) on the + // terminal's own default, which is white on a light terminal — so light + // themes flash a blinding white instead of their cream surface. Wrapping + // the content paints every cell (including blank lines) with the theme + // panel, so the surface is uniform regardless of the terminal default and + // ClearScreen repaints to the theme color instead of white. + if m.width > 0 && m.height > 0 { + content = zeroTheme.panel.Width(m.width).Height(m.height).Render(content) + } } // Always requested, independent of the notifier: the composer cursor's // focus/blink behavior (composerBlinkMsg above) needs tea.FocusMsg/BlurMsg From 62e3f31df5646611a638d9c810dee8dc4f3a9c9b Mon Sep 17 00:00:00 2001 From: euxaristia <25621994+euxaristia@users.noreply.github.com> Date: Sat, 1 Aug 2026 03:32:32 -0400 Subject: [PATCH 2/2] fix(tui): apply theme panel content to tea.View after render tea.NewView stores the original string; reassigning the local content variable left the view unchanged. Call SetContent after the panel render so the alt-screen frame uses the themed output. --- internal/tui/model.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/tui/model.go b/internal/tui/model.go index 56f55bc6e..141c91f47 100644 --- a/internal/tui/model.go +++ b/internal/tui/model.go @@ -2773,6 +2773,7 @@ func (m model) View() tea.View { // ClearScreen repaints to the theme color instead of white. if m.width > 0 && m.height > 0 { content = zeroTheme.panel.Width(m.width).Height(m.height).Render(content) + view.SetContent(content) } } // Always requested, independent of the notifier: the composer cursor's