Skip to content

Commit 7f12e60

Browse files
committed
fix(tui): avoid padding-reuse in status bar inline elements and introduce terminal height safety margin
1 parent a8f9295 commit 7f12e60

2 files changed

Lines changed: 19 additions & 15 deletions

File tree

go/tui/styles.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ var (
6666
Foreground(colorBarFg).
6767
PaddingLeft(2)
6868

69+
barTextStyle = lipgloss.NewStyle().
70+
Foreground(colorBarFg)
71+
6972
barKeyStyle = lipgloss.NewStyle().
7073
Foreground(colorAccent).
7174
Bold(true)

go/tui/view.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ func (m *TuiModel) View() string {
1919
if w < 40 {
2020
w = 40
2121
}
22-
if h < 10 {
23-
h = 10
22+
if h < 11 {
23+
h = 11
2424
}
25+
h = h - 1 // Safety margin of 1 line at the bottom to prevent scrolling
2526

2627
showLogs := (m.serverRunning || m.activeTask != TaskNone) && w >= 120
2728

@@ -583,26 +584,26 @@ func (m *TuiModel) renderStatusBar(w int) string {
583584
}
584585

585586
line1Parts := []string{
586-
statusIcon + barKeyStyle.Render("Select packages") + barStyle.Render(" · "),
587+
statusIcon + barKeyStyle.Render("Select packages") + barTextStyle.Render(" · "),
587588
}
588589
if m.hasPendingChanges() {
589-
line1Parts = append(line1Parts, barKeyStyle.Render("s") + barStyle.Render(" save changes · "))
590+
line1Parts = append(line1Parts, barKeyStyle.Render("s") + barTextStyle.Render(" save changes · "))
590591
}
591592
line1Parts = append(line1Parts,
592-
barKeyStyle.Render("g") + barStyle.Render(" settings"),
593+
barKeyStyle.Render("g") + barTextStyle.Render(" settings"),
593594
)
594595

595596
var serverShortcut string
596597
if m.serverRunning {
597-
serverShortcut = barKeyStyle.Render("x") + barStyle.Render(" stop server")
598+
serverShortcut = barKeyStyle.Render("x") + barTextStyle.Render(" stop server")
598599
} else {
599-
serverShortcut = barKeyStyle.Render("d") + barStyle.Render(" start server")
600+
serverShortcut = barKeyStyle.Render("d") + barTextStyle.Render(" start server")
600601
}
601602

602603
if m.activeTask != TaskNone {
603604
spinFrames := []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"}
604605
spin := cyanRegularStyle.Render(spinFrames[m.tickCount%len(spinFrames)])
605-
line1Parts = []string{spin + " " + barStyle.Render(m.statusMsg)}
606+
line1Parts = []string{spin + " " + barTextStyle.Render(m.statusMsg)}
606607
}
607608

608609
_ = mode
@@ -612,9 +613,9 @@ func (m *TuiModel) renderStatusBar(w int) string {
612613
sep := barSepStyle.Render(" │ ")
613614
var shortcutParts []string
614615
shortcutParts = append(shortcutParts,
615-
barKeyStyle.Render("↑↓") + barStyle.Render(" move"),
616-
barKeyStyle.Render("Space") + barStyle.Render(" toggle"),
617-
barKeyStyle.Render("c") + barStyle.Render(" manage"),
616+
barKeyStyle.Render("↑↓") + barTextStyle.Render(" move"),
617+
barKeyStyle.Render("Space") + barTextStyle.Render(" toggle"),
618+
barKeyStyle.Render("c") + barTextStyle.Render(" manage"),
618619
)
619620

620621
items := m.getActiveItems()
@@ -623,14 +624,14 @@ func (m *TuiModel) renderStatusBar(w int) string {
623624
hasHoveredInstalled = items[m.selectedIndex].Installed
624625
}
625626
if hasHoveredInstalled {
626-
shortcutParts = append(shortcutParts, barKeyStyle.Render("u") + barStyle.Render(" update"))
627+
shortcutParts = append(shortcutParts, barKeyStyle.Render("u") + barTextStyle.Render(" update"))
627628
}
628629

629630
shortcutParts = append(shortcutParts,
630631
serverShortcut,
631-
barKeyStyle.Render("r") + barStyle.Render(" refresh"),
632-
barKeyStyle.Render("n") + barStyle.Render(" new"),
633-
barKeyStyle.Render("q") + barStyle.Render(" quit"),
632+
barKeyStyle.Render("r") + barTextStyle.Render(" refresh"),
633+
barKeyStyle.Render("n") + barTextStyle.Render(" new"),
634+
barKeyStyle.Render("q") + barTextStyle.Render(" quit"),
634635
)
635636
line2 := barStyle.Width(w).Render(strings.Join(shortcutParts, sep))
636637

0 commit comments

Comments
 (0)