Skip to content

Epic: descontinuar o layout legado de vez (remover newLayoutDesigns() e pages/layout.tsx) #25

Open

Description

@alltomatos

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)

  1. 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).
  2. Comecar pelos arquivos pequenos/triviais, verificando cada um no preview antes de seguir pro proximo.
  3. pages/layout.tsx e app.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.
  4. 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.
  5. 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 sempre true como 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtRefactors, cleanup, architectural debtui-uxUI/UX polish and consistency work

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions