Skip to content

P1: Sidebar fixa com paineis tabados (Contexto, Plano, Memoria, Uso, Git, Swarm) #29

Description

@chapzin

Problema

Os widgets de informacao (contexto, memoria, git, todos) sao renderizados como overlays flutuantes sobre a area de chat (info_widget.rs usa calculate_placements e render_all). Nao ha sidebar fixa como no DeepSeek TUI.

Layout atual

[  Header centrado (6-8 linhas)  ]
[         Area de Chat           ]
[  Status bar (1 linha)          ]
[  Input box                     ]

Widgets flutuam sobre o chat.

Layout desejado

[ Header compacto (1-2 linhas)  ]
[   Chat Area    |  Sidebar   ]
[                |  [Tab1]    ]
[                |  [Tab2]    ]
[                |  [...]     ]
[ Status bar + custo/contexto  ]
[ Input box                     ]

O que precisa ser feito

1. Sidebar container fixo

  • Largura configurarvel (default 30% ou 40 cols, min 25)
  • Borda esquerda com cor de accent quando focada
  • Header da sidebar com nome da tab ativa

2. Sistema de Tabs

  • Abas: Contexto, Plano/Todos, Memoria, Uso/Custo, Git, Swarm
  • Navegacao: Ctrl+Left/Right ou numeros (Ctrl+1..6)
  • Indicador visual de tab ativa (sublinhado, cor diferente)
  • Badge com contagem (ex: "Todos (3)")

3. Redimensionamento

  • Ctrl+Shift+Left/Right para redimensionar sidebar
  • Ratio persistido em config.toml
  • Minimo 25 cols, maximo 50% da tela

4. Conteudo das Tabs

  • Contexto: uso de tokens, cache hit %, modelo atual, provider, working dir
  • Plano/Todos: lista de tasks do plano com status (pending/in_progress/completed)
  • Memoria: memories recentes, status do pipeline (embedding/sidecar/inject)
  • Uso/Custo: grafico de uso de contexto, custo acumulado, breakdown por provider
  • Git: branch, status, arquivos modificados, diff summary
  • Swarm: grafo de agents, status de cada um, canais de comunicacao

5. Estado persistente

  • Tab ativa salva por projeto
  • Largura da sidebar persistida

Arquivos a modificar

  • src/tui/ui.rs — adicionar area da sidebar no layout
  • src/tui/ui_layout.rs — suporte a sidebar no split horizontal
  • src/tui/info_widget.rs — migrar widgets para tabs da sidebar
  • src/tui/info_widget_layout.rs — layout das tabs
  • src/tui/info_widget_model.rs — estado de tabs
  • crates/jcode-config-types/src/lib.rs — sidebar_width, active_tab

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions