Skip to content

Tech debt: dividir packages/app/src/pages/layout.tsx (2427 linhas) por responsabilidade #13

Closed

Description

@alltomatos

Parent

Segue o mesmo princípio SRP/tamanho de arquivo do orchestrator (ver AGENTS.md seção "File Size (SRP boundary)" e ORCHESTRATOR-ROADMAP.md).

What to build

packages/app/src/pages/layout.tsx tem 2427 linhas — é o layout legado inteiro (sidebar, titlebar, menus de projeto/workspace, tabs) num arquivo só. Extrair sub-componentes/controllers/hooks que já são estruturalmente separáveis para arquivos próprios, mantendo o arquivo principal como orquestrador enxuto.

Acceptance criteria

  • Arquivo principal reduzido para perto de ~250-400 linhas (o que sobrar deve ser genuinamente uma coisa só, não fragmentado artificialmente)
  • Nenhuma mudança de comportamento — só reorganização de código
  • Sem quebra de import circular (checar dependências entre os novos arquivos)
  • typecheck limpo

Blocked by

Nenhuma — pode ser feita a qualquer momento, oportunisticamente (não precisa ser dedicada).

Verification

bun run typecheck limpo. Idealmente também abrir a tela correspondente no preview pra confirmar que nada quebrou visualmente.


Nota de processo: sem release de app associada ao fechamento desta issue — acumula em dev como o resto do trabalho de UI/UX.

Activity

  1. alltomatos commented on Aug 19, 2026

    @alltomatos
    OwnerAuthor

    Extraído DialogDeleteWorkspace/DialogResetWorkspace pra arquivo próprio (commit a81ff3a) — 2427 -> 2308 linhas. O resto do arquivo é uma única função de componente (LegacyLayout) sem outras costuras de topo — tudo compartilha o mesmo closure de estado local (store, signals, refs). Reduzir mais exigiria reestruturar esse estado compartilhado em um controller (padrão que já usamos em home-controller.ts/home-scroll-controller.ts), o que é uma mudança bem mais arriscada de fazer sem verificação visual ao vivo. Deixando aberta — próximo passo real exigiria uma sessão dedicada com preview funcionando.

  2. alltomatos commented on Sep 13, 2026

    @alltomatos
    OwnerAuthor

    Obsoleto. Substituído pelo Epic #25 (descontinuar o layout legado de vez), que vai remover packages/app/src/pages/layout.tsx por completo em vez de refatorá-lo.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtRefactors, cleanup, architectural debt

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions