Add convoy dashboard panel to gt feed TUI

Adds a third panel to the feed TUI showing:
- In-progress convoys with progress bars (completed/total)
- Recently landed convoys (last 24h) with time since landing

Features:
- Panel cycles with tab: tree -> convoy -> feed
- Direct access via 1/2/3 number keys
- Auto-refresh every 10 seconds
- Styled progress indicators (●●○○)

The convoy panel bridges the gap between "WHO is working" (agent tree)
and "WHAT is happening" (event feed) by showing "WHAT IS SHIPPING".

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
gastown/crew/gus
2025-12-30 23:17:41 -08:00
committed by Steve Yegge
parent 59ffb3cc58
commit 31c4a222bc
5 changed files with 469 additions and 38 deletions

View File

@@ -13,10 +13,11 @@ type KeyMap struct {
Bottom key.Binding
// Panel switching
Tab key.Binding
ShiftTab key.Binding
FocusTree key.Binding
FocusFeed key.Binding
Tab key.Binding
ShiftTab key.Binding
FocusTree key.Binding
FocusConvoy key.Binding
FocusFeed key.Binding
// Actions
Enter key.Binding
@@ -72,9 +73,13 @@ func DefaultKeyMap() KeyMap {
key.WithKeys("1"),
key.WithHelp("1", "agent tree"),
),
FocusFeed: key.NewBinding(
FocusConvoy: key.NewBinding(
key.WithKeys("2"),
key.WithHelp("2", "event feed"),
key.WithHelp("2", "convoys"),
),
FocusFeed: key.NewBinding(
key.WithKeys("3"),
key.WithHelp("3", "event feed"),
),
Enter: key.NewBinding(
key.WithKeys("enter"),
@@ -120,7 +125,7 @@ func (k KeyMap) ShortHelp() []key.Binding {
func (k KeyMap) FullHelp() [][]key.Binding {
return [][]key.Binding{
{k.Up, k.Down, k.PageUp, k.PageDown, k.Top, k.Bottom},
{k.Tab, k.FocusTree, k.FocusFeed, k.Enter, k.Expand},
{k.Tab, k.FocusTree, k.FocusConvoy, k.FocusFeed, k.Enter, k.Expand},
{k.Search, k.Filter, k.ClearFilter, k.Refresh},
{k.Help, k.Quit},
}