From f9b233761243ec917318c56886a18046d8477472 Mon Sep 17 00:00:00 2001 From: swanadiva Date: Tue, 23 Jun 2026 17:15:39 +0700 Subject: [PATCH] fix(tui): restore muted status bar, remove duplicate global keys from tab footers --- pkg/tui/host_list_tab.go | 2 +- pkg/tui/key_list_tab.go | 2 +- pkg/tui/sftp_browser_tab.go | 2 +- pkg/tui/snippet_list_tab.go | 2 +- pkg/tui/tabs.go | 19 +++++++++++++++++++ 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pkg/tui/host_list_tab.go b/pkg/tui/host_list_tab.go index a255450..9c16197 100644 --- a/pkg/tui/host_list_tab.go +++ b/pkg/tui/host_list_tab.go @@ -167,7 +167,7 @@ func (t *HostListTab) View() string { // Footer var footer styledRow - footerText := "[n]ew [e]dit [d]el [f]sftp [K]eygen [/]find [q]uit Ctrl+Tab:switch Ctrl+Q:close" + footerText := "[n]ew [e]dit [d]el [f]sftp [K]eygen [/]find [q]uit" footer = styledRow{text: SubtitleStyle.Render(footerText), plain: footerText} rows = append(rows, footer) // for widest measurement diff --git a/pkg/tui/key_list_tab.go b/pkg/tui/key_list_tab.go index 1b08fd4..c401841 100644 --- a/pkg/tui/key_list_tab.go +++ b/pkg/tui/key_list_tab.go @@ -190,7 +190,7 @@ func (t *KeyListTab) View() string { } } - footerPlain := "Ctrl+N:add Ctrl+E:edit D:delete Esc:back Ctrl+Tab:switch Ctrl+Q:close" + footerPlain := "Ctrl+N:add Ctrl+E:edit D:delete Esc:back" footer := styledRow{text: SubtitleStyle.Render(footerPlain), plain: footerPlain} widestRow := lipgloss.Width(titlePlain) diff --git a/pkg/tui/sftp_browser_tab.go b/pkg/tui/sftp_browser_tab.go index 8721a6c..1c6aa69 100644 --- a/pkg/tui/sftp_browser_tab.go +++ b/pkg/tui/sftp_browser_tab.go @@ -567,7 +567,7 @@ func (t *SFTPBrowserTab) View() string { } b.WriteString("\n" + lipgloss.PlaceHorizontal(t.width, lipgloss.Center, - SubtitleStyle.Render("Tab:switch ↑↓:nav /:filter C:copy D:delete N:mkdir R:refresh Esc:close Ctrl+Tab:switch Ctrl+Q:close"))) + SubtitleStyle.Render("Tab:switch ↑↓:nav /:filter C:copy D:delete N:mkdir R:refresh Esc:close"))) return b.String() } diff --git a/pkg/tui/snippet_list_tab.go b/pkg/tui/snippet_list_tab.go index 736b7fc..4e9df09 100644 --- a/pkg/tui/snippet_list_tab.go +++ b/pkg/tui/snippet_list_tab.go @@ -190,7 +190,7 @@ func (t *SnippetListTab) View() string { } } - footerPlain := "Ctrl+N:add Ctrl+E:edit D:delete Esc:back Ctrl+Tab:switch Ctrl+Q:close" + footerPlain := "Ctrl+N:add Ctrl+E:edit D:delete Esc:back" footer := styledRow{text: SubtitleStyle.Render(footerPlain), plain: footerPlain} widestRow := lipgloss.Width(titlePlain) diff --git a/pkg/tui/tabs.go b/pkg/tui/tabs.go index 207c4b4..1a903be 100644 --- a/pkg/tui/tabs.go +++ b/pkg/tui/tabs.go @@ -4,6 +4,7 @@ import ( "strings" tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" ) // Tab represents a single tab in the TUI @@ -174,6 +175,10 @@ func (tm *TabManager) View() string { b.WriteString(content) } + // Render status bar (muted, like tamagosh) + b.WriteString("\n") + b.WriteString(renderStatusBar(tm)) + return b.String() } @@ -197,4 +202,18 @@ func renderTabBar(tm *TabManager) string { return TabBarStyle.Render(bar) } +// renderStatusBar renders the bottom status bar, centered — muted like tamagosh +func renderStatusBar(tm *TabManager) string { + hints := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit" + rendered := SubtitleStyle.Render(hints) + if tm.width > 0 { + w := lipgloss.Width(rendered) + if w < tm.width { + pad := (tm.width - w) / 2 + rendered = strings.Repeat(" ", pad) + rendered + } + } + return rendered +} +