Repository navigation
Description
Parent
Decisao de produto tomada em 2026-08-19 (substitui a issue #7, que estava aguardando essa decisao): ao inves de manter dialog-connect-provider.tsx com dois branches (legado/v2), vamos descontinuar o layout antigo inteiro.
What to build
Remover o sistema de layout legado por completo: a flag settings.general.newLayoutDesigns() deixa de existir (ou vira sempre true/removida), pages/layout.tsx (LegacyLayout, ~2300 linhas) e componentes so-legado somem, e cada arquivo que hoje bifurca Show when={newLayout()} fallback={<Legado/>} fica só com o branch v2.
32 arquivos referenciam newLayoutDesigns() hoje (grep em packages/app/src):
app.tsx (o switch raiz LegacyLayout vs NewLayout)
components/dialog-connect-provider.tsx
components/dialog-select-file.tsx
components/dialog-select-server.tsx
components/directory-picker.tsx
components/prompt-input.tsx
components/prompt-input/context-items.tsx
components/prompt-input/image-attachments.tsx
components/prompt-input/slash-popover.tsx
components/session-context-usage.tsx
components/session/session-header.tsx
components/settings-general.tsx
components/settings-server-picker.tsx
components/settings-v2/general.tsx (a UI do proprio toggle "layout novo")
components/status-popover-body.tsx
components/terminal.tsx
components/titlebar.tsx
context/permission.tsx
context/prompt.tsx
context/settings.tsx (+ settings.test.ts)
pages/layout.tsx (o shell legado inteiro)
pages/session.tsx
pages/session/composer/session-composer-region.tsx
pages/session/composer/session-revert-dock.tsx (+ .stories.tsx)
pages/session/composer/session-todo-dock.tsx
pages/session/file-tabs.tsx
pages/session/session-side-panel.tsx
pages/session/terminal-panel.tsx / terminal-panel-v2.tsx
pages/session/timeline/dialog-delete-session.tsx
pages/session/timeline/message-timeline.tsx
pages/session/use-session-commands.tsx
Alem disso, varios componentes existem em pares legado/v2 por convencao de nome (nao so pela flag) e o par legado pode ser deletado direto quando confirmado que só é usado pelo caminho antigo: settings-general.tsx (vs settings-v2/general.tsx), possivelmente dialog-select-model.tsx (vs a variante v2), prompt-input.tsx (vs prompt-input-v2.tsx), etc. — precisa checar caso a caso quais desses tem uso fora do branch legado antes de apagar.
Abordagem recomendada (fatias pequenas, nao uma PR gigante)
- Levantar quais dos 32 arquivos sao triviais (só remover o branch morto, sem risco) vs quais tem logica de negocio real dividida entre os dois branches (esses precisam de mais cuidado).
- Comecar pelos arquivos pequenos/triviais, verificando cada um no preview antes de seguir pro proximo.
pages/layout.tsxeapp.tsx(o switch raiz) devem ser os ULTIMOS a mudar, ja que sao o ponto de entrada — só depois que todo o resto ja não depender mais do branch legado.- Remover a opcao de toggle "layout novo" da tela de Configuracoes (
settings-v2/general.tsx) só no final, depois que não houver mais nenhum branch legado pra alternar. - Cada fatia devia ser um commit proprio (nao uma PR monolitica), verificado no preview antes do proximo.
Acceptance criteria
-
settings.general.newLayoutDesigns()removido de todo o codebase (ou sempretruecomo passo intermediario antes de remover de vez) -
pages/layout.tsx(LegacyLayout) deletado - Componentes so-legado confirmados sem uso e deletados (settings-general.tsx e outros identificados na varredura)
- App funciona identico ao layout novo atual, sem regressao visual/funcional
- typecheck limpo em todo o monorepo
Blocked by
Nenhuma tecnicamente, mas e trabalho grande — recomendado fazer em fatias ao longo de varias sessoes, nao de uma vez.
Verification
Testar manualmente TODAS as telas principais no preview (Home, Sessao, Configuracoes, dialogs de conectar provider/servidor) apos cada fatia, nao so no final.
Nota de processo: sem release de app associada ao fechamento desta issue — acumula em dev, e dado o tamanho, provavelmente sera fechada só depois de varias sessoes de trabalho incremental.
Activity
docs: register legacy layout removal epic in the roadmap
docs: adicionar diretrizes de tech-debt para split de arquivos grandes
refactor(app): dividir session-side-panel.tsx por responsabilidade (#95)