Skip to content

feat(tui): polish dashboard with filter, toast, layout, multi-select, refresh - #11

Merged
htcarr3 merged 1 commit into
mainfrom
improve-tui-021426
Feb 15, 2026
Merged

feat(tui): polish dashboard with filter, toast, layout, multi-select, refresh#11
htcarr3 merged 1 commit into
mainfrom
improve-tui-021426

Conversation

@htcarr3

@htcarr3 htcarr3 commented Feb 15, 2026

Copy link
Copy Markdown
Contributor

What

Adds 10 polish features to the dashboard TUI to make it feel like a power-user cockpit, plus rendering fixes for JetBrains terminals and wide-mode layout.

Why

The TUI was functional but lacked the ergonomics for daily use — no filtering, no feedback on operations, no bulk actions, and poor use of wide terminals.

How

Interaction features:

  • Search/filter (/) — case-insensitive substring match on both repo and workspace lists, with cursor reset on filter change
  • Multi-select (space) — toggle selection on workspace items; r/x/a batch-operate on selected; first Esc clears selection
  • Remember cursor — drilling into a repo and pressing Esc restores repo list cursor position

Visual enhancements:

  • Status bar — global counts (3 repos · 12 workspaces · 5 running) below breadcrumb
  • Toast notifications — green/red feedback on start/stop/archive with 3s auto-dismiss
  • Scroll indicator(3/12) in panel title when list overflows viewport
  • Branch + time columns — workspace rows show branch name and compact relative time (3h, 2d)
  • Side-by-side layout — list (60%) + detail (40%) horizontally joined when terminal ≥120 cols

Background operations:

  • Manual refresh (ctrl+r) — reload repos or workspaces, preserving cursor position
  • Redraw (ctrl+l) — clear screen and re-query terminal size
  • Auto-refresh — 5s tmux polling updates running status without full git enrichment

Bug fixes:

  • JetBrains JediTerm: disable wide layout (Unicode width issues with box-drawing chars)
  • Consistent line widths via constrainWidth(padToHeight()) ordering
  • Help bar visibility in wide mode (missing \n after lipgloss.JoinHorizontal)
  • Debug logging infrastructure (FR8_TUI_DEBUG=1) for terminal rendering issues

Test plan

  • bin/ci passes (build, vet, test -race, lint, tidy)
  • 73 TUI tests covering all new features
  • TestViewOutputConsistentLineWidths / TestViewOutputConsistentLineWidthsWide verify all output lines are exact terminal width
  • TestWideRendersHelpBar / TestWideWorkspaceRendersHelpBar verify the help bar fix
  • TestIsWideJediTerm verifies JediTerm detection

… refresh

Add 10 features to make the dashboard TUI feel like a power-user cockpit:

- Remember cursor position on back-navigation from workspace to repo list
- Scroll position indicator (3/12) in panel titles for long lists
- Global status bar with repo/workspace/running counts
- Toast notifications for start/stop/archive operations (3s auto-dismiss)
- Search/filter with `/` (case-insensitive, works on both views)
- Multi-select with space for batch run/stop/archive operations
- Branch name and compact time columns in workspace rows
- Side-by-side list+detail layout for wide terminals (≥120 cols)
- ctrl+r manual refresh, ctrl+l redraw
- Auto-refresh running status via tmux polling (5s interval)

Also fixes:
- JetBrains JediTerm rendering: disable wide layout, ensure consistent
  line widths via constrainWidth(padToHeight()) ordering
- Help bar visibility in wide mode (missing newline after JoinHorizontal)
- Unused variable lint error in debug.go
- Promote charmbracelet/x/ansi to direct dependency (used in panel.go)
@htcarr3
htcarr3 merged commit 7fae304 into main Feb 15, 2026
6 checks passed
@htcarr3
htcarr3 deleted the improve-tui-021426 branch February 15, 2026 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant