Skip to content

perf(#238): Fase 2 — gate parcial do Git Nexus (codemap-symbols lazy)#250

Draft
Lucas-Belucci-Bellini wants to merge 1 commit into
mainfrom
claude/gitnexus-fase2-lazy-symbols
Draft

perf(#238): Fase 2 — gate parcial do Git Nexus (codemap-symbols lazy)#250
Lucas-Belucci-Bellini wants to merge 1 commit into
mainfrom
claude/gitnexus-fase2-lazy-symbols

Conversation

@Lucas-Belucci-Bellini

Copy link
Copy Markdown
Owner

Mega-plano #238 · Fase 2 — gate parcial do Git Nexus

Decisão do operador: gate parcial — a web mantém o grafo (leve), só o pesado
fica sob demanda. Esta é a primeira fatia, e ela não depende do motor real
(logo, independe do PR #247): é otimização web pura, verificável na nuvem.

O problema (medição da Fase 1, no #238)

O maior peso de /git-nexus era o codemap-symbols.json (~450 kB, 1137
funções)
, importado estático no topo de git-nexus.js → entrava no chunk
da rota e baixava em toda visita, mesmo no modo Arquivos (que nem usa).

A solução (gate parcial)

  • src/data/codemap-symbols-meta.json (novo, ~4 kB): companion leve com
    meta + funções por arquivo, importado no boot. Cobre o que a UI precisa
    sempre: badges de drill-down, hint e métricas.
  • src/pages/git-nexus.js: o grafo de símbolos completo virou lazy
    (import() dinâmico via loadSymbolmap()) — só carrega ao abrir o modo
    Funções ou um drill-down. switchMode virou async e mostra
    "⏳ carregando funções…" no intervalo. O modo Arquivos (default na web)
    segue no codemap.json (47 kB) — grafo mantido.
  • scripts/gen-symbols.mjs: passa a emitir o companion junto do mapa cheio
    (mantém os dois em sincronia em futuras regerações).

Resultado (build de produção)

antes depois
chunk git-nexus (rota) 438.5 kB / 48.8 kB gz 22.6 kB / 8.4 kB gz
símbolos (451 kB) dentro do chunk, sempre chunk separado, sob demanda

~40 kB gzip a menos ao entrar em /git-nexus na web; os símbolos só baixam
se o usuário pedir o nível de funções.

Verificação (remota, Playwright)

performance.getEntriesByType('resource') antes/depois de clicar em Funções:

{ beforeBig:false, filesOk:true, afterBig:true, fnRendered:true,
  metrics:"240 funções (top) · 754 chamadas · 6 clusters · 12 classes · 1137 funções totais" }
  • beforeBig:false → modo Arquivos não baixa os 421 kB. ✅
  • afterBig:true → Funções carrega o chunk sob demanda. ✅
  • Screenshot de /git-nexus sem regressão visual. Build limpo.

CHANGELOG atualizado. Como é web puro e 100% verificável no remoto, está pronto
pra merge assim que o CI ficar verde (deixei draft pra você dar o ok).

🤖 Generated with Claude Code


Generated by Claude Code

O maior peso de /git-nexus era o codemap-symbols.json (~450 kB, 1137 funções),
importado estático e baixado em toda visita. Agora:

- src/data/codemap-symbols-meta.json (novo, ~4 kB): companion leve com meta +
  funções por arquivo, importado no boot (badges/hint/métricas).
- src/pages/git-nexus.js: o grafo de símbolos completo virou lazy (import()
  dinâmico) — só carrega no modo Funções / drill-down. Web mantém o grafo de
  arquivos; o nível de funções carrega sob demanda.
- scripts/gen-symbols.mjs: passa a emitir o companion junto do mapa cheio.

Build: chunk git-nexus 438.5 kB -> 22.6 kB (gzip 48.8 -> 8.4 kB); os ~421 kB
dos símbolos saem pra um chunk separado, sob demanda. Verificado no navegador
(Playwright): Arquivos renderiza sem baixar símbolos; Funções carrega on-demand.
@vercel

vercel Bot commented Jun 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
projeto-baluarte Ready Ready Preview, Comment Jun 18, 2026 10:06pm

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants