From e5d32bd22ed09e90b171f353ab455426a36e7262 Mon Sep 17 00:00:00 2001 From: swanadiva Date: Tue, 23 Jun 2026 17:45:06 +0700 Subject: [PATCH] fix(tui): unify keybinding footer, remove duplicate status bar --- pkg/tui/host_form_tab.go | 2 +- pkg/tui/host_list_tab.go | 2 +- pkg/tui/key_form_tab.go | 2 +- pkg/tui/key_list_tab.go | 2 +- pkg/tui/sftp_browser_tab.go | 2 +- pkg/tui/snippet_form_tab.go | 2 +- pkg/tui/snippet_list_tab.go | 2 +- pkg/tui/tabs.go | 19 ------------------- 8 files changed, 7 insertions(+), 26 deletions(-) diff --git a/pkg/tui/host_form_tab.go b/pkg/tui/host_form_tab.go index 8130e8d..2076181 100644 --- a/pkg/tui/host_form_tab.go +++ b/pkg/tui/host_form_tab.go @@ -351,7 +351,7 @@ func (t *HostFormTab) View() string { inner.WriteString("\n") inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center, - SubtitleStyle.Render("↑↓: navigate Enter: next Ctrl+S: save Esc: cancel"))) + SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"))) box := BorderStyle.Render(inner.String()) var b strings.Builder diff --git a/pkg/tui/host_list_tab.go b/pkg/tui/host_list_tab.go index 9c16197..ef1fabb 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" + footerText := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit" footer = styledRow{text: SubtitleStyle.Render(footerText), plain: footerText} rows = append(rows, footer) // for widest measurement diff --git a/pkg/tui/key_form_tab.go b/pkg/tui/key_form_tab.go index 02c856d..6401ee3 100644 --- a/pkg/tui/key_form_tab.go +++ b/pkg/tui/key_form_tab.go @@ -231,7 +231,7 @@ func (t *KeyFormTab) View() string { inner.WriteString("\n") inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center, - SubtitleStyle.Render("↑↓: navigate Enter: next Ctrl+S: save Esc: cancel"))) + SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"))) box := BorderStyle.Render(inner.String()) var b strings.Builder diff --git a/pkg/tui/key_list_tab.go b/pkg/tui/key_list_tab.go index c401841..f81e521 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" + footerPlain := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit" 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 1c6aa69..78f24e2 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"))) + SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"))) return b.String() } diff --git a/pkg/tui/snippet_form_tab.go b/pkg/tui/snippet_form_tab.go index 0a72419..be24058 100644 --- a/pkg/tui/snippet_form_tab.go +++ b/pkg/tui/snippet_form_tab.go @@ -239,7 +239,7 @@ func (t *SnippetFormTab) View() string { inner.WriteString("\n") inner.WriteString(lipgloss.PlaceHorizontal(contentW, lipgloss.Center, - SubtitleStyle.Render("↑↓: navigate Enter: next Ctrl+S: save Esc: cancel"))) + SubtitleStyle.Render("Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit"))) box := BorderStyle.Render(inner.String()) var b strings.Builder diff --git a/pkg/tui/snippet_list_tab.go b/pkg/tui/snippet_list_tab.go index 4e9df09..ef7162e 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" + footerPlain := "Ctrl+Tab:switch Ctrl+Q:close ↑↓:nav Enter:SSH Ctrl+N:add Ctrl+F:SFTP Ctrl+K:keys Ctrl+P:snippets q:quit" 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 1a903be..207c4b4 100644 --- a/pkg/tui/tabs.go +++ b/pkg/tui/tabs.go @@ -4,7 +4,6 @@ import ( "strings" tea "github.com/charmbracelet/bubbletea" - "github.com/charmbracelet/lipgloss" ) // Tab represents a single tab in the TUI @@ -175,10 +174,6 @@ func (tm *TabManager) View() string { b.WriteString(content) } - // Render status bar (muted, like tamagosh) - b.WriteString("\n") - b.WriteString(renderStatusBar(tm)) - return b.String() } @@ -202,18 +197,4 @@ 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 -} -