# Execution — Overhaul de layout da TUI (estilo OpenCode)

## Rastreabilidade
- Orquestração: Precisamos que o layout em si do TUI tenha uma experiência similar à do OpenCode
- Slug: `precisamos-que-o-layout-em-si-do-tui-tenha-uma-experiencia-similar-a-do-opencode`
- Documento: log de Execução (implementação)
- Estado: implementação parcial — verde
- Artefatos de origem: `03-techspec.md`, `04-tasks.md`, `05-refinement.md`, `06-adr.md`

## Tarefa
Implementar o overhaul de apresentação/entrada da TUI para a estética OpenCode (overhaul completo + command palette + minimalista com telemetria sob demanda), preservando o domínio. Execução conduzida com Agent Team paralelo na fundação e integração lead-driven.

Cobertura por task do backlog `04-tasks.md`:
- **Concluídas e testadas**: T-01, T-02 (`theme.rs`), T-07 (`palette.rs`), T-08 (estado `Overlay`/`CommandPalette`), T-09 (bindings `Ctrl+K`/`/`/`t`), T-10 (`render_command_palette`), T-11 (`render_telemetry` + saldo local), T-03 (casco→tema), T-04/T-05 (borderless + barra de seleção em list/board), T-06 (figlet na landing), T-12 (enxugar telemetria do board), T-15 (parcial: render de overlays em 40/80/120).
- **Pendentes**: T-13 (seletor de provider agrupado), T-14 (eventos de observabilidade dos overlays), T-16 (degradação final + `visual-review`), e migração ao tema das telas restantes (provider setup, viewer, checkpoint, error, help, summary).

## Resumo da implementação
- **`theme.rs` (novo)**: `Theme` com tokens semânticos; `ColorDepth::detect` (truecolor/256/16) com fallback; helpers `selection_style`, `section_header`, `label_value`, `footer_line`, `centered_rect`, `overlay_dim`, `figlet_banner`. Acento primário pêssego/laranja.
- **`palette.rs` (novo)**: `CommandId` (desacoplado de `Action`), `COMMANDS` (PT-BR), `filter` fuzzy ranqueado, `CommandPalette` (open/close/navegação/seleção).
- **`app.rs`**: `enum Overlay { None, CommandPalette, Telemetry }` + campos `overlay`/`palette`; interceptação no topo de `update`; `dispatch_screen`, `update_overlay`, `command_to_action` (comando → `Action` re-despachada); `text_mode` ativo com palette aberto.
- **`event.rs`**: `Action::OpenPalette`/`Telemetry`; `Ctrl+K` global, `/` e `t` fora de text_mode; bindings antigos preservados.
- **`ui.rs`**: render de overlays (palette + telemetria) com fundo escurecido e modal centralizado; `render_header`/`render_footer`/`render_list`/`render_new`/`render_board` migrados ao tema; board sem telemetria densa por padrão (com hint `t telemetria`/`Ctrl+K`); landing com `figlet_banner`; barras de seleção full-width.
- **`mod.rs`**: registro de `theme` e `palette`.

Domínio inalterado: `stage.rs`, `runner.rs`, `persist.rs`, `orchestration.rs`, schemas e persistência em `docs/<slug>/`.

## Arquivos alterados
- `src/tui/theme.rs` (novo)
- `src/tui/palette.rs` (novo)
- `src/tui/mod.rs` (registro de módulos)
- `src/tui/app.rs` (`Overlay`, estado do palette, reducer)
- `src/tui/event.rs` (ações/bindings + testes)
- `src/tui/ui.rs` (overlays + migração ao tema + minimalismo do board + testes)

## Testes e evidências
- `cargo test`: **126 verdes, 0 falhas** (2 suítes: 119 + 7). Inclui 21 testes de `theme`, 10 de `palette`, 2 de bindings, 1 de render de overlays (40/80/120).
- `cargo clippy --all-targets`: sem warnings nos módulos novos/alterados.
- `cargo fmt`: aplicado.
- Paridade palette↔teclas: cada `CommandId` mapeia para uma `Action` existente (`command_to_action`).

## Riscos e pendências
- **Falha pré-existente fora do escopo**: o working tree contém WIP não-meu (`runner.rs` +1657, `loader.rs`, `persist.rs`); um teste de skills do Codex chegou a falhar e foi corrigido externamente durante a execução (teste stale removido). Não toquei nesse WIP. Registrar no Review.
- **Pendências de implementação**: T-13, T-14, T-16 e migração ao tema das telas restantes — necessárias para "overhaul completo" pleno antes do merge.
- **`visual-review`** ainda não executado contra as referências do OpenCode (home/seletor) — gate do checkpoint de merge.
- **Sem feature flag** (decisão: substituição direta); reversão por VCS.
