Skip to content

P4: Layout responsivo (header compacto, sidebar overlay, single column em telas estreitas) #38

Description

@chapzin

Problema

O layout atual degrada mal em terminais estreitos (< 80 colunas). Header verboso ocupa muitas linhas, sidebar colapsa em vez de virar overlay, input box nao adapta altura.

Breakpoints propostos

>= 100 colunas (Full)

  • Header horizontal em 1 linha
  • Chat area + Sidebar fixa (30-40% width)
  • Status bar completa com custo e barra de contexto
  • Input box com autocomplete dropdown

80-99 colunas (Normal)

  • Header horizontal em 1-2 linhas
  • Sidebar fixa reduzida (25-30% width)
  • Status bar sem custo (apenas barra de contexto)
  • Input com autocomplete

60-79 colunas (Compacto)

  • Header em 2 linhas (brand + server, model + version)
  • Sidebar vira overlay (toggle com Ctrl+B)
  • Status bar minimalista (modelo + cache)
  • Input sem autocomplete dropdown

< 60 colunas (Minimo)

  • Header em 1 linha: "⟡ JH · fox🦊 · v0.11"
  • Sem sidebar
  • Status bar: apenas spinner + cache %
  • Input em 3 linhas max

O que precisa ser feito

1. Deteccao de largura

  • Monitorar resize events do terminal
  • Recalcular layout em cada frame
  • Transicao suave entre breakpoints (nao saltar)

2. Sidebar como overlay em telas pequenas

  • Overlay flutuante que cobre parte do chat
  • Toggle com Ctrl+B ou /sidebar
  • Background semi-transparente atras do overlay
  • Fecha com Esc ou clicando fora

3. Header adaptativo

  • Funcao header_for_width(width) que retorna conteudo apropriado
  • Truncamento inteligente de cada elemento
  • Sempre manter brand + modelo visiveis

4. Input box adaptativo

  • Altura maxima reduzida em telas pequenas
  • Placeholder simplificado
  • Autocomplete desabilitado automaticamente

5. Diagramas responsivos

  • Pinned diagram redimensiona proporcionalmente
  • Em telas < 60 colunas, diagramas viram overlay
  • Zoom minimo garantido para legibilidade

Arquivos a modificar

  • src/tui/ui.rs — draw_inner, logica de breakpoints
  • src/tui/ui_layout.rs — funcoes de layout adaptativo
  • src/tui/ui_header.rs — header_for_width
  • src/tui/ui_input.rs — input adaptativo
  • src/tui/info_widget.rs — overlay mode
  • Novo: src/tui/ui_responsive.rs — constantes e helpers

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