feat(tui): mouse click for settings sections, column sort, logs panel
CI / test (pull_request) Successful in 1m44s
CI / lint (pull_request) Successful in 1m17s
CI / vulncheck (pull_request) Successful in 56s

- Click Alerts/Nodes/Users sub-tabs in settings to switch sections
- Click STATUS/NAME/LATENCY column headers to sort (click again
  to reverse direction)
- Logs panel show/hide: [l] toggles sidebar visibility, click
  focused panel to hide. Monitors expand to full width when hidden.
- Logs full-screen: Enter when focused on logs opens scrollable
  full-screen log view with severity tags, filter toggle [f],
  and live updates
This commit was merged in pull request #159.
This commit is contained in:
2026-06-28 11:34:34 -04:00
parent ab1194f74d
commit 18e2d60210
6 changed files with 120 additions and 4 deletions
+4 -2
View File
@@ -92,6 +92,8 @@ func (m Model) View() string {
return ""
case stateDetail:
return m.zones.Scan(m.viewDetailPanel())
case stateLogs:
return m.viewLogsFullscreen()
case stateHistory:
return m.viewHistoryPanel()
case stateSLA:
@@ -152,7 +154,7 @@ func (m Model) viewDashboard() string {
var content string
switch m.currentTab {
case tabMonitors:
showSidebar := m.termWidth >= wideBreakpoint
showSidebar := m.termWidth >= wideBreakpoint && m.logsOpen
if showSidebar {
availW := m.termWidth - chromePadH
leftW := availW * 70 / 100
@@ -310,7 +312,7 @@ func (m Model) renderFooter(stats dashboardStats) string {
switch m.currentTab {
case tabMonitors:
if m.focusedPanel == panelLogs {
keys = "[↑/↓]Scroll [l/Esc]Back [T]Theme [q]Quit"
keys = "[↑/↓]Scroll [Enter]Expand [l/Esc]Back [T]Theme [q]Quit"
} else if m.detailOpen {
keys = "[i]Close [Enter]Expand [h]History [s]SLA [e]Edit [l]Logs [↑/↓]Select [T]Theme [q]Quit"
} else {