tutanus 0.12.2 → 0.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/index.d.ts.map +1 -1
  3. package/dist/bin/index.js +5 -0
  4. package/dist/bin/index.js.map +1 -1
  5. package/dist/cli/diagnostic/processing-diagnostic.d.ts.map +1 -1
  6. package/dist/cli/diagnostic/processing-diagnostic.js +1 -2
  7. package/dist/cli/diagnostic/processing-diagnostic.js.map +1 -1
  8. package/out/404/index.html +1 -0
  9. package/out/404.html +1 -0
  10. package/out/__next.__PAGE__.txt +9 -0
  11. package/out/__next._full.txt +18 -0
  12. package/out/__next._head.txt +5 -0
  13. package/out/__next._index.txt +6 -0
  14. package/out/__next._tree.txt +3 -0
  15. package/out/_next/static/chunks/05-c3ty_6dwfk.js +1 -0
  16. package/out/_next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  17. package/out/_next/static/chunks/1061ff024jzvu.js +2 -0
  18. package/out/_next/static/chunks/14mrh2-p_w84d.js +1 -0
  19. package/out/_next/static/chunks/15orcrkp-_9ct.js +4 -0
  20. package/out/_next/static/chunks/1jq4o6yq14o4c.js +31 -0
  21. package/out/_next/static/chunks/1l-dhswmn6dl_.js +11 -0
  22. package/out/_next/static/chunks/1rxncug86bump.js +1 -0
  23. package/out/_next/static/chunks/2n-4qa9h44lgj.js +1 -0
  24. package/out/_next/static/chunks/3n7dm2ojtyzwn.js +1 -0
  25. package/out/_next/static/chunks/3uta7d_6k863-.css +1 -0
  26. package/out/_next/static/chunks/turbopack-2xb6mmb6_q43u.js +1 -0
  27. package/out/_next/static/media/icon-1.008jpsm4iakzh.png +0 -0
  28. package/out/_next/static/sHP-sIMshwWXMCtdszRWm/_buildManifest.js +11 -0
  29. package/out/_next/static/sHP-sIMshwWXMCtdszRWm/_clientMiddlewareManifest.js +1 -0
  30. package/out/_next/static/sHP-sIMshwWXMCtdszRWm/_ssgManifest.js +1 -0
  31. package/out/_not-found/__next._full.txt +16 -0
  32. package/out/_not-found/__next._head.txt +5 -0
  33. package/out/_not-found/__next._index.txt +6 -0
  34. package/out/_not-found/__next._not-found.__PAGE__.txt +5 -0
  35. package/out/_not-found/__next._not-found.txt +5 -0
  36. package/out/_not-found/__next._tree.txt +3 -0
  37. package/out/_not-found/index.html +1 -0
  38. package/out/_not-found/index.txt +16 -0
  39. package/out/changelog/__next._full.txt +573 -0
  40. package/out/changelog/__next._head.txt +5 -0
  41. package/out/changelog/__next._index.txt +6 -0
  42. package/out/changelog/__next._tree.txt +4 -0
  43. package/out/changelog/__next.changelog.__PAGE__.txt +560 -0
  44. package/out/changelog/__next.changelog.txt +5 -0
  45. package/out/changelog/index.html +550 -0
  46. package/out/changelog/index.txt +573 -0
  47. package/out/github/dashboard/__next._full.txt +20 -0
  48. package/out/github/dashboard/__next._head.txt +5 -0
  49. package/out/github/dashboard/__next._index.txt +6 -0
  50. package/out/github/dashboard/__next._tree.txt +3 -0
  51. package/out/github/dashboard/__next.github.dashboard.__PAGE__.txt +9 -0
  52. package/out/github/dashboard/__next.github.dashboard.txt +4 -0
  53. package/out/github/dashboard/__next.github.txt +5 -0
  54. package/out/github/dashboard/index.html +1 -0
  55. package/out/github/dashboard/index.txt +20 -0
  56. package/out/index.html +1 -0
  57. package/out/index.txt +18 -0
  58. package/out/privacy-policy/__next._full.txt +38 -0
  59. package/out/privacy-policy/__next._head.txt +5 -0
  60. package/out/privacy-policy/__next._index.txt +6 -0
  61. package/out/privacy-policy/__next._tree.txt +4 -0
  62. package/out/privacy-policy/__next.privacy-policy.__PAGE__.txt +23 -0
  63. package/out/privacy-policy/__next.privacy-policy.txt +5 -0
  64. package/out/privacy-policy/index.html +1 -0
  65. package/out/privacy-policy/index.txt +38 -0
  66. package/out/terms-of-use/__next._full.txt +37 -0
  67. package/out/terms-of-use/__next._head.txt +5 -0
  68. package/out/terms-of-use/__next._index.txt +6 -0
  69. package/out/terms-of-use/__next._tree.txt +4 -0
  70. package/out/terms-of-use/__next.terms-of-use.__PAGE__.txt +18 -0
  71. package/out/terms-of-use/__next.terms-of-use.txt +5 -0
  72. package/out/terms-of-use/index.html +1 -0
  73. package/out/terms-of-use/index.txt +37 -0
  74. package/package.json +2 -2
@@ -0,0 +1,573 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[39756,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
3
+ 3:I[37457,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
4
+ 4:I[22016,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/1rxncug86bump.js"],""]
5
+ c:I[68027,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default",1]
6
+ :HL["/_next/static/chunks/3uta7d_6k863-.css","style"]
7
+ :HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css","style",{"crossOrigin":"anonymous","referrerPolicy":"no-referrer"}]
8
+ 5:T661e,<p>Todas as mudanças notáveis deste repositório serão documentadas aqui.</p>
9
+ <p>O formato segue <a href="https://keepachangelog.com/pt-BR/1.0.0/">Keep a Changelog</a>,<br>e este projeto adere ao <a href="https://semver.org/lang/pt-BR/">Versionamento Semântico</a>.</p>
10
+ <h2>[0.9.0] - 2026-05-24</h2>
11
+ <h3>Adicionado</h3>
12
+ <ul>
13
+ <li><p><strong>LSP (Language Server Protocol) Integration</strong></p>
14
+ <ul>
15
+ <li>Novo comando <code>tutanus lsp</code> para iniciar servidor LSP via stdio</li>
16
+ <li>Suporte a <code>textDocument/didOpen</code>, <code>didChange</code>, <code>didSave</code> com diagnósticos em tempo real</li>
17
+ <li>Baseado em <code>vscode-languageserver</code> e SDK do Tutanus</li>
18
+ </ul>
19
+ </li>
20
+ <li><p><strong>Docker Image Oficial</strong></p>
21
+ <ul>
22
+ <li>Dockerfile otimizado com multi-stage build e <code>USER tutanus</code></li>
23
+ <li>Workflow CI para build e push automático para GitHub Container Registry (GHCR)</li>
24
+ <li>Imagem publicada em releases com tags semver</li>
25
+ </ul>
26
+ </li>
27
+ <li><p><strong>Parallel AST Parsing por Worker</strong></p>
28
+ <ul>
29
+ <li>Parsing de AST distribuído entre Worker Threads</li>
30
+ <li>Workers recebem apenas conteúdo bruto e parseiam localmente</li>
31
+ <li>Elimina overhead de structured clone de ASTs complexos</li>
32
+ </ul>
33
+ </li>
34
+ </ul>
35
+ <h3>Melhorado</h3>
36
+ <ul>
37
+ <li><p><strong>Parsing Lazy</strong></p>
38
+ <ul>
39
+ <li>ASTs são parseados sob demanda via <code>ScopeAstCache</code> apenas quando um analista realmente precisa</li>
40
+ <li><code>prepararComAst()</code> removido do fluxo principal — economia de CPU em projetos grandes</li>
41
+ <li>Cache global (process-level) preservado para reaproveitamento entre execuções</li>
42
+ </ul>
43
+ </li>
44
+ <li><p><strong>Análise Incremental com Diff Estrutural</strong></p>
45
+ <ul>
46
+ <li>Nova função <code>calcularHashEstrutural()</code> extrai assinatura apenas de nós estruturais (imports, funções, classes, interfaces, tipos)</li>
47
+ <li>Fallback baseado em regex quando AST não está disponível</li>
48
+ <li>Mudanças de formatação/comentários não invalidam o cache incremental</li>
49
+ <li>Campo <code>hashEstrutural</code> adicionado ao estado incremental</li>
50
+ </ul>
51
+ </li>
52
+ <li><p><strong>Memory Pooling</strong></p>
53
+ <ul>
54
+ <li>Cache de supressões inline por arquivo (<code>extrairSupressoes</code>) — evita re-parsing a cada analista</li>
55
+ <li>Hoist do Map <code>resultadosOtimizados</code> no executor — reduz alocações por arquivo</li>
56
+ <li>Pool genérico <code>ObjectPool&lt;T&gt;</code> para reuso de objetos</li>
57
+ </ul>
58
+ </li>
59
+ <li><p><strong>Worker Pool</strong></p>
60
+ <ul>
61
+ <li>Stripping de ASTs antes da serialização para workers (structured clone mais leve)</li>
62
+ </ul>
63
+ </li>
64
+ </ul>
65
+ <h2>[0.10.7] - 2026-05-28</h2>
66
+ <h3>Adicionado</h3>
67
+ <ul>
68
+ <li><strong>Geração de Barrels Estruturados e Organizados</strong><ul>
69
+ <li>Novo comando <code>tutanus barrels</code> para gerenciar barrels (index.ts) do projeto</li>
70
+ <li><code>tutanus barrels --scan</code> — varre o projeto e mostra quais barrels seriam criados/atualizados (dry-run)</li>
71
+ <li><code>tutanus barrels --generate</code> — cria e atualiza barrels com exports organizados</li>
72
+ <li>Classificação automática de <code>type</code> vs <code>value</code> exports para compatibilidade com <code>verbatimModuleSyntax</code></li>
73
+ <li>Detecção de conflitos (múltiplos arquivos exportando o mesmo nome)</li>
74
+ <li>Preservação de barrels &quot;curados manualmente&quot; (com código customizado)</li>
75
+ <li>Reorganização automática de barrels após movimentação de arquivos</li>
76
+ </ul>
77
+ </li>
78
+ </ul>
79
+ <h3>Alterado</h3>
80
+ <ul>
81
+ <li><strong>Reestruturação Mudou de Modificação Ativa para Sugestões</strong><ul>
82
+ <li><code>reestruturar</code> agora gera apenas <strong>sugestões</strong> de reorganização — o usuário decide conscientemente o que aplicar</li>
83
+ <li>A lógica ativa de reestruturação de arquitetura foi removida por ser extremamente complexa e por cada projeto ter suas peculiaridades</li>
84
+ <li>As sugestões são salvas em arquivo JSON para revisão manual</li>
85
+ <li>O fluxo de <code>diagnosticar</code> passou a incluir sugestões estruturais não-destrutivas</li>
86
+ </ul>
87
+ </li>
88
+ </ul>
89
+ <h3>Infra</h3>
90
+ <ul>
91
+ <li>Versão bump: <code>0.10.6</code> → <code>0.10.7</code></li>
92
+ </ul>
93
+ <h2>[0.10.0] - 2026-05-24</h2>
94
+ <h3>Adicionado</h3>
95
+ <ul>
96
+ <li><p><strong>Streaming de Relatórios para Projetos Grandes</strong></p>
97
+ <ul>
98
+ <li>Nova classe <code>RelatorioStream</code> com gravação incremental em shards NDJSON</li>
99
+ <li>Compressão gzip por shard com manifesto de índice (<code>stream-manifest.json</code>)</li>
100
+ <li>Rotação automática por contagem de ocorrências ou bytes</li>
101
+ <li><code>pushOcorrencia()</code> injetado no executor via callback para coleta em tempo real</li>
102
+ <li>Configs: <code>REPORT_STREAM_ENABLED</code>, <code>REPORT_STREAM_AUTO_THRESHOLD</code>, <code>REPORT_STREAM_MAX_OCCURRENCES_PER_SHARD</code>, <code>REPORT_STREAM_MAX_BYTES_PER_SHARD</code>, <code>REPORT_STREAM_COMPRESS</code></li>
103
+ <li>Flag <code>--stream</code> no CLI <code>diagnosticar</code></li>
104
+ </ul>
105
+ </li>
106
+ <li><p><strong>Suporte a Monorepos Avançado</strong></p>
107
+ <ul>
108
+ <li>Detector automático de monorepos: pnpm-workspace.yaml, lerna.json, nx.json, turbo.json, npm/yarn workspaces</li>
109
+ <li>Análise cross-package: versões inconsistentes, dependências internas faltando</li>
110
+ <li>Flag <code>--monorepo</code> no CLI com auto-descoberta de workspaces</li>
111
+ <li>Registrado como detector global no registry</li>
112
+ </ul>
113
+ </li>
114
+ <li><p><strong>Machine Learning para Detecção de Bugs</strong></p>
115
+ <ul>
116
+ <li>8 padrões de bug com scoring estatístico: null pointer, memory leak, race condition, type assertion insegura, unhandled promise, deep nesting, magic numbers, comparação insegura</li>
117
+ <li>Extração de features (complexidade ciclomática, aninhamento, uso de <code>any</code>, etc.)</li>
118
+ <li>Probabilidade Bayesiana de bugs por arquivo com confidence scoring (0-100%)</li>
119
+ <li>Registrado como detector no registry</li>
120
+ </ul>
121
+ </li>
122
+ <li><p><strong>API Pública Consolidada e Estável (v1)</strong></p>
123
+ <ul>
124
+ <li><code>src/index.ts</code> — entry point programático unificado</li>
125
+ <li>Subpath exports estáveis no package.json: <code>&quot;. &quot;</code>, <code>&quot;./sdk&quot;</code>, <code>&quot;./api&quot;</code>, <code>&quot;./types&quot;</code>, <code>&quot;./bin&quot;</code></li>
126
+ <li><code>analyzeFile</code>, <code>analyzeProject</code>, <code>iniciarServidorApi</code> como API pública</li>
127
+ </ul>
128
+ </li>
129
+ <li><p><strong>Modo Server Headless</strong></p>
130
+ <ul>
131
+ <li>Novo comando <code>tutanus serve</code> para iniciar servidor HTTP REST API</li>
132
+ <li>Flags: <code>--port</code>, <code>--host</code>, <code>--cors-origin</code>, <code>--daemon</code></li>
133
+ <li>Graceful shutdown em SIGTERM/SIGINT</li>
134
+ </ul>
135
+ </li>
136
+ </ul>
137
+ <h3>Corrigido</h3>
138
+ <ul>
139
+ <li><code>swagger-jsdoc</code> com <code>require()</code> em módulo ESM — convertido para <code>import()</code> dinâmico (<code>src/api/services/swagger-config.ts</code>)</li>
140
+ <li>Adicionados aliases <code>@api</code> e <code>@api/server</code> no tsconfig.json</li>
141
+ </ul>
142
+ <h3>Infra</h3>
143
+ <ul>
144
+ <li>Versão bump: <code>0.9.0</code> → <code>0.10.0</code></li>
145
+ </ul>
146
+ <hr>
147
+ <h2>[0.8.0] - 2026-05-20</h2>
148
+ <h3>Adicionado</h3>
149
+ <ul>
150
+ <li><p><strong>Marketplace de Analistas</strong></p>
151
+ <ul>
152
+ <li>Registro local e busca remota de analistas comunitários</li>
153
+ <li>Sistema de versionamento semver para analistas externos</li>
154
+ <li>CLI commands: <code>search</code>, <code>install</code>, <code>remove</code>, <code>list</code>, <code>info</code>, <code>publish</code></li>
155
+ <li>API REST: <code>/api/v1/marketplace/*</code></li>
156
+ </ul>
157
+ </li>
158
+ <li><p><strong>Suporte Multi-linguagem</strong></p>
159
+ <ul>
160
+ <li>Go: analistas para código, segurança, concorrência, recursos, boas práticas</li>
161
+ <li>Rust: analistas para código, segurança, memória, concorrência, boas práticas</li>
162
+ <li>Java/Kotlin: analistas para código, segurança, exceções, boas práticas</li>
163
+ <li>PHP avançado com parser dedicado</li>
164
+ </ul>
165
+ </li>
166
+ </ul>
167
+ <h3>Melhorado</h3>
168
+ <ul>
169
+ <li><strong>Performance e Infraestrutura</strong><ul>
170
+ <li><code>AnalysisCache</code> persistente entre execuções com TTL configurável</li>
171
+ <li>Worker Pool configurável (<code>maxWorkers</code>, <code>batchSize</code>)</li>
172
+ <li>Suporte a múltiplos projetos simultâneos (flag <code>--path</code>)</li>
173
+ <li>Análise de vulnerabilidades em dependências</li>
174
+ <li>SDK exposto via <code>tutanus/sdk</code> (<code>analyzeFile</code>, <code>analyzeProject</code>)</li>
175
+ <li>Eliminação de <code>fs.stat()</code> redundante no preparo de AST</li>
176
+ <li>Hash consistente (XXH) entre executor e analysis-cache</li>
177
+ <li>Paralelismo real entre projetos (<code>Promise.all</code>)</li>
178
+ <li>Cache de AST entre analistas no mesmo escopo (<code>ScopeAstCache</code>)</li>
179
+ </ul>
180
+ </li>
181
+ </ul>
182
+ <h2>[0.7.0] - 2026-05-18</h2>
183
+ <h3>Adicionado</h3>
184
+ <ul>
185
+ <li><p><strong>Análise Assistida por IA</strong></p>
186
+ <ul>
187
+ <li>Integração com modelos de IA para sugestões de refatoração</li>
188
+ <li>Detecção de padrões avançada com IA</li>
189
+ <li>Recomendações automáticas de melhoria de código</li>
190
+ </ul>
191
+ </li>
192
+ <li><p><strong>Suporte Completo a Supressão Inline em Markdown</strong></p>
193
+ <ul>
194
+ <li><code>&lt;!-- @tutanus-disable regra1 regra2 --&gt;</code> para supressão em bloco</li>
195
+ <li><code>&lt;!-- @tutanus-disable-next-line regra --&gt;</code> para supressão de linha única</li>
196
+ <li><code>&lt;!-- @tutanus-disable-all --&gt;</code> para suprimir todas as regras</li>
197
+ <li>Funciona com <code>detector-markdown</code> e <code>analista-formatador</code></li>
198
+ <li>Compatibilidade com padrão legado <code>&lt;!-- tutanus-ignore: regra --&gt;</code></li>
199
+ </ul>
200
+ </li>
201
+ </ul>
202
+ <h3>Melhorado</h3>
203
+ <ul>
204
+ <li><p><strong>GitHub Actions</strong></p>
205
+ <ul>
206
+ <li>Análise estruturada com YAML AST</li>
207
+ <li>Sistema de scoring (0-100) para workflows</li>
208
+ <li>Detectores de segurança, performance e boas práticas</li>
209
+ </ul>
210
+ </li>
211
+ <li><p><strong>Métricas Automáticas</strong></p>
212
+ <ul>
213
+ <li>Cálculo automático de scores baseado na estrutura real</li>
214
+ <li>Histórico de tendências com dados persistentes</li>
215
+ </ul>
216
+ </li>
217
+ <li><p><strong>SDK Programático</strong></p>
218
+ <ul>
219
+ <li><code>TutanusSDK.analisarGithubActions()</code> para análise programática</li>
220
+ <li><code>TutanusSDK.analisarRepositorio()</code> para análise global</li>
221
+ <li><code>TutanusSDK.registrarDetector()</code> para plugins customizados</li>
222
+ </ul>
223
+ </li>
224
+ </ul>
225
+ <h3>Corrigido</h3>
226
+ <ul>
227
+ <li>Detecções falsas positivas reduzidas com análise contextual</li>
228
+ <li>Tratamento de erros aprimorado em workflows malformados</li>
229
+ </ul>
230
+ <h2>[0.6.0] - 2026-04-13</h2>
231
+ <h3>Adicionado</h3>
232
+ <ul>
233
+ <li><p><strong>Análise Avançada de GitHub Actions</strong></p>
234
+ <ul>
235
+ <li>Detecção aprimorada de problemas de segurança, performance e boas práticas</li>
236
+ <li>Análise estruturada com YAML AST para detecções mais precisas</li>
237
+ <li>Sistema de scoring (0-100) para workflows individuais</li>
238
+ </ul>
239
+ </li>
240
+ <li><p><strong>Métricas Automáticas do Projeto</strong></p>
241
+ <ul>
242
+ <li>Cálculo automático de scores baseado na estrutura real do projeto</li>
243
+ <li>Histórico de tendências com dados persistentes</li>
244
+ </ul>
245
+ </li>
246
+ </ul>
247
+ <h3>Melhorado</h3>
248
+ <ul>
249
+ <li><p><strong>SDK Programático</strong></p>
250
+ <ul>
251
+ <li><code>TutanusSDK.analisarGithubActions()</code> para análise programática de workflows</li>
252
+ <li><code>TutanusSDK.analisarRepositorio()</code> para análise global do repositório</li>
253
+ <li><code>TutanusSDK.registrarDetector()</code> para registro de plugins customizados</li>
254
+ </ul>
255
+ </li>
256
+ <li><p><strong>Performance</strong></p>
257
+ <ul>
258
+ <li>Processamento paralelo de detectores</li>
259
+ <li>Cache de análise para workflows não modificados</li>
260
+ </ul>
261
+ </li>
262
+ </ul>
263
+ <h3>Corrigido</h3>
264
+ <ul>
265
+ <li>Detecções falsas positivas reduzidas com análise contextual</li>
266
+ <li>Tratamento de erros aprimorado em workflows malformados</li>
267
+ </ul>
268
+ <h2>[0.5.0] - 2026-03-15</h2>
269
+ <h3>Adicionado</h3>
270
+ <ul>
271
+ <li>Sistema de plugins para GitHub Actions com detecção de segurança e boas práticas</li>
272
+ <li>Análise avançada de workflows com detecção de anti-padrões</li>
273
+ <li>Integração com SDK para análise programática</li>
274
+ </ul>
275
+ <h3>Melhorado</h3>
276
+ <ul>
277
+ <li>Performance do scanner de arquivos otimizada com processamento paralelo</li>
278
+ <li>Precisão dos detectores de código frágil e vazamentos de memória</li>
279
+ </ul>
280
+ <h2>[0.4.3] - 2026-02-20</h2>
281
+ <h3>Adicionado</h3>
282
+ <ul>
283
+ <li><strong>Gerenciamento de Nomes de Variáveis</strong></li>
284
+ <li>Novo comando <code>names</code>: Varre o projeto e extrai nomes de variáveis para mapeamento em <code>names/name.txt</code>.</li>
285
+ <li>Novo comando <code>rename</code>: Aplica renomeações de variáveis em massa baseadas no arquivo de mapeamento.</li>
286
+ <li>Script automatizado para sugestão de traduções (Português) para nomes de variáveis.</li>
287
+ </ul>
288
+ <h3>Alterado</h3>
289
+ <ul>
290
+ <li><strong>Segurança de Tipagem</strong><ul>
291
+ <li>Refinamento massivo de tipos <code>any</code> e <code>unknown</code> em todo o core e CLI via <code>fix-types</code>.</li>
292
+ <li>Melhoria na inferência de tipos em callbacks assíncronos e interfaces de plugins.</li>
293
+ </ul>
294
+ </li>
295
+ <li><strong>Robustez do Renomeador</strong><ul>
296
+ <li>Implementação de lista de nomes protegidos para evitar renomeação acidental de propriedades nativas (Node.js/JS).</li>
297
+ <li>Ajuste no gerador de código para evitar erros de sintaxe em casts do TypeScript.</li>
298
+ </ul>
299
+ </li>
300
+ </ul>
301
+ <h3>Corrigido</h3>
302
+ <ul>
303
+ <li><strong>Erros de Compilação</strong> Correção de erros de sintaxe gerados pelo Babel em <code>analista-html.ts</code>, <code>detector-markdown.ts</code> e <code>processamento-diagnostico.ts</code>.</li>
304
+ <li><strong>CLI</strong> Resolução do erro <code>ERR_INVALID_MODULE_SPECIFIER</code> na execução global do pacote via ESM loader.</li>
305
+ </ul>
306
+ <h2>[0.3.9] - 2026-02-19</h2>
307
+ <h3>Adicionado</h3>
308
+ <ul>
309
+ <li><strong>Gerenciamento</strong> de Nomes de Variáveis*<ul>
310
+ <li>Novo comando <code>names</code>: Varre o projeto e extrai nomes de variáveis para mapeamento em <code>names/name.txt</code>.</li>
311
+ <li>Novo comando <code>rename</code>: Aplica renomeações de variáveis em massa baseadas no arquivo de mapeamento.</li>
312
+ <li>Script automatizado para sugestão de traduções (Português) para nomes de variáveis.</li>
313
+ </ul>
314
+ </li>
315
+ </ul>
316
+ <h3>Alterado</h3>
317
+ <ul>
318
+ <li><strong>Segurança</strong> de <em>Tipagem</em><ul>
319
+ <li>Refinamento massivo de tipos <code>any</code> e <code>unknown</code> em todo o core e CLI via <code>fix-types</code>.</li>
320
+ <li>Melhoria na inferência de tipos em callbacks assíncronos e interfaces de plugins.</li>
321
+ </ul>
322
+ </li>
323
+ <li><strong>Robustez</strong> do <em>Renomeador</em><ul>
324
+ <li>Implementação de lista de nomes protegidos para evitar renomeação acidental de propriedades nativas (Node.js/JS).</li>
325
+ <li>Ajuste no gerador de código para evitar erros de sintaxe em casts do TypeScript.</li>
326
+ </ul>
327
+ </li>
328
+ </ul>
329
+ <h3>Corrigido</h3>
330
+ <ul>
331
+ <li><strong>Erros</strong> de Compilação* Correção de erros de sintaxe gerados pelo Babel em <code>analista-html.ts</code>, <code>detector-markdown.ts</code> e <code>processamento-diagnostico.ts</code>.<ul>
332
+ <li><em>CLI</em> Resolução do erro <code>ERR_INVALID_MODULE_SPECIFIER</code> na execução global do pacote via ESM loader.</li>
333
+ </ul>
334
+ </li>
335
+ </ul>
336
+ <h2>[0.3.8] - 2026-02-18</h2>
337
+ <h3>Adicionado</h3>
338
+ <ul>
339
+ <li><strong>Manutenção</strong> Documentação e CHANGELOG atualizados para refletir o estado real do projeto.</li>
340
+ <li><strong>Refatoração</strong> Pequenas melhorias e correções de bugs.</li>
341
+ </ul>
342
+ <h2>[0.3.6] - 2026-01-23</h2>
343
+ <h3>Adicionado</h3>
344
+ <ul>
345
+ <li><p><strong>Extração Avançada de Sinais</strong> Sistema inteligente de análise de sinais do projeto para reestruturação mais precisa</p>
346
+ <ul>
347
+ <li>Detecção de padrões arquiteturais e tecnologias dominantes</li>
348
+ <li>Análise de complexidade estrutural para decisões estratégicas</li>
349
+ <li>Ajuste contextual de destinos baseado em sinais detectados</li>
350
+ <li>Integração com <code>OperarioEstrutura</code> para planejamento estratégico aprimorado</li>
351
+ </ul>
352
+ </li>
353
+ <li><p><strong>Validações Aprimoradas</strong> Melhorias em plugins de análise para CSS, HTML e XML</p>
354
+ <ul>
355
+ <li>Validações de qualidade de código e acessibilidade</li>
356
+ <li>Verificações de segurança aprimoradas</li>
357
+ <li>Mensagens de validação expandidas</li>
358
+ </ul>
359
+ </li>
360
+ <li><p><strong>Sistema de Pontuação Contextual</strong> Mecanismo de pontuação que considera sinais avançados</p>
361
+ <ul>
362
+ <li>Ajustes contextuais baseados na análise de projeto</li>
363
+ <li>Pontuação mais precisa para diferentes tipos de projeto</li>
364
+ </ul>
365
+ </li>
366
+ </ul>
367
+ <h3>Alterado</h3>
368
+ <ul>
369
+ <li><strong>Configuração Lint-Staged</strong> Otimização da configuração para melhor legibilidade e performance</li>
370
+ <li><strong>Mapeamento de Reversão</strong> Melhorias na organização de importações e consistência</li>
371
+ </ul>
372
+ <h3>Corrigido</h3>
373
+ <ul>
374
+ <li><strong>Segurança HTML</strong> Correção de expressão regular vulnerável na filtragem HTML (Code Scanning Alert #47)</li>
375
+ <li><strong>Validações de Segurança</strong> Reforço das verificações de segurança em análise de HTML</li>
376
+ </ul>
377
+ <h3>Interno</h3>
378
+ <ul>
379
+ <li><strong>Tipos Expandidos</strong> Novos campos em <code>SinaisProjetoAvancados</code> para detecção de padrões e tecnologias</li>
380
+ <li><strong>Mensagens de Plugin</strong> Expansão das mensagens de validação para melhor feedback</li>
381
+ </ul>
382
+ <h2>[0.3.5] - 2026-01-23</h2>
383
+ <h2>[0.3.4] - 2026-01-23</h2>
384
+ <h3>Adicionado</h3>
385
+ <ul>
386
+ <li><strong>Manutenção</strong> Documentação e CHANGELOG atualizados para refletir o estado real do projeto.</li>
387
+ <li><strong>Refatoração</strong> Pequenas melhorias e correções de bugs.</li>
388
+ </ul>
389
+ <h2>[0.3.3] - 2026-01-21</h2>
390
+ <h3>Adicionado</h3>
391
+ <ul>
392
+ <li>Melhoria na estabilidade da saída JSON do comando <code>diagnosticar</code> para integração em CI.</li>
393
+ <li>Testes adicionais e validações em analistas que processam arquivos Markdown.</li>
394
+ </ul>
395
+ <h3>Alterado</h3>
396
+ <ul>
397
+ <li>Redução de falsos positivos em deteções de async não tratado em fluxos assíncronos.</li>
398
+ </ul>
399
+ <h3>Corrigido</h3>
400
+ <ul>
401
+ <li>Tratamento de erros assíncronos em <code>mapa-reversao</code> e correções menores em logs e mensagens.</li>
402
+ </ul>
403
+ <h2>[0.3.2] - 2026-01-19</h2>
404
+ <h3>Adicionado</h3>
405
+ <ul>
406
+ <li>Script <code>md: add-disclaimer</code> para inserir aviso de proveniência em arquivos Markdown.</li>
407
+ <li>Utilitários de manutenção para geração e verificação de relatórios.</li>
408
+ </ul>
409
+ <h3>Alterado</h3>
410
+ <ul>
411
+ <li>Melhorias na geração de relatórios e pequenas otimizações de performance.</li>
412
+ </ul>
413
+ <h3>Corrigido</h3>
414
+ <ul>
415
+ <li>Ajustes em documentação e comentários internos; correções de pequenos bugs em scripts.</li>
416
+ </ul>
417
+ <h2>[0.3.1] - 2026-01-17</h2>
418
+ <h3>Adicionado</h3>
419
+ <ul>
420
+ <li>Baseline de testes e ajustes iniciais na configuração do CI para validação de analistas.</li>
421
+ </ul>
422
+ <h3>Corrigido</h3>
423
+ <ul>
424
+ <li>Correções em flags do CLI (<code>--export</code>, <code>--json</code>) e comportamento de exportação de relatórios.</li>
425
+ </ul>
426
+ <h2>[0.3.0] - 2026-01-15</h2>
427
+ <h3>Adicionado</h3>
428
+ <ul>
429
+ <li><p><strong>Novos Comandos CLI</strong></p>
430
+ <ul>
431
+ <li><code>formatar</code> - Aplica formatação estilo Tutanus (whitespace, seções, finais de linha) com suporte a Prettier</li>
432
+ <li><code>otimizar-svg</code> - Otimiza SVGs do projeto usando otimizador interno (svgo-like)</li>
433
+ <li><code>atualizar</code> - Atualiza o Tutanus verificando integridade via Guardian antes</li>
434
+ <li><code>reverter</code> - Gerencia mapa de reversão para moves aplicados (listar, arquivo, move, limpar)</li>
435
+ </ul>
436
+ </li>
437
+ <li><p><strong>Novos Analistas e Detectores</strong></p>
438
+ <ul>
439
+ <li><code>detector-arquitetura</code> - Análise de padrões arquiteturais</li>
440
+ <li><code>detector-codigo-fragil</code> - Identifica código frágil e propenso a bugs</li>
441
+ <li><code>detector-construcoes-sintaticas</code> - Detecta construções sintáticas problemáticas</li>
442
+ <li><code>detector-duplicacoes</code> - Identifica código duplicado</li>
443
+ <li><code>detector-interfaces-inline</code> - Detecta interfaces inline que deveriam ser extraídas</li>
444
+ <li><code>detector-contexto-inteligente</code> - Análise contextual avançada</li>
445
+ <li><code>detector-fantasmas</code> - Detecta arquivos órfãos e não utilizados</li>
446
+ <li><code>detector-performance</code> - Identifica problemas de performance</li>
447
+ </ul>
448
+ </li>
449
+ <li><p><strong>Plugins Multi-linguagem</strong></p>
450
+ <ul>
451
+ <li><code>analista-react</code> e <code>analista-react-hooks</code> - Análise específica para React</li>
452
+ <li><code>analista-tailwind</code> - Análise de classes Tailwind</li>
453
+ <li><code>analista-css</code> e <code>analista-css-in-js</code> - Análise de estilos</li>
454
+ <li><code>analista-html</code> e <code>analista-xml</code> - Análise de markup</li>
455
+ <li><code>analista-svg</code> - Análise e otimização de SVGs</li>
456
+ <li><code>analista-python</code> - Suporte heurístico para Python</li>
457
+ <li><code>detector-markdown</code> - Validação de arquivos Markdown</li>
458
+ <li><code>detector-documentacao</code> - Análise de qualidade de documentação</li>
459
+ </ul>
460
+ </li>
461
+ <li><p><strong>Sistema de Supressão Inline</strong> <code>@tutanus-disable-next-line &lt;regra&gt;</code> funciona para todos os analistas</p>
462
+ </li>
463
+ <li><p><strong>Modos de Execução Expandidos</strong></p>
464
+ <ul>
465
+ <li><code>--executive</code> - Modo executivo (apenas problemas críticos/alta prioridade)</li>
466
+ <li><code>--compact</code> - Modo compacto (consolida progresso e mostra o essencial)</li>
467
+ <li><code>--trust-compiler</code> - Confia no compilador para reduzir falsos positivos</li>
468
+ </ul>
469
+ </li>
470
+ <li><p><strong>Suporte a Mais Linguagens</strong> PHP, Python (heurístico)</p>
471
+ </li>
472
+ </ul>
473
+ <h3>Alterado</h3>
474
+ <ul>
475
+ <li><strong>Node.js 24+</strong> Agora requer Node.js ≥ 24.0.4</li>
476
+ <li><strong>Refatoração do Sistema de Mensagens</strong> Mensagens centralizadas por domínio</li>
477
+ <li><strong>Melhoria no Sistema de Pontuação</strong> Ajustes contextuais mais precisos</li>
478
+ <li><strong>Guardian</strong> Integração mais profunda com comandos de atualização</li>
479
+ </ul>
480
+ <h3>Corrigido</h3>
481
+ <ul>
482
+ <li>Normalização de line endings para compatibilidade Windows/Linux</li>
483
+ <li>Falsos positivos em detecção de segredos em arquivos de documentação</li>
484
+ <li>Tratamento de placeholders em strings de configuração</li>
485
+ </ul>
486
+ <h3>Removido</h3>
487
+ <ul>
488
+ <li>Dependência circular interna em <code>tutanus: file: tutanus-0.3.0.tgz</code> (problema de empacotamento)</li>
489
+ </ul>
490
+ <hr>
491
+ <h2>[0.2.0] - 2025-08-28</h2>
492
+ <h3>Adicionado</h3>
493
+ <ul>
494
+ <li><p><strong>Pool de Workers</strong> Sistema completo de paralelização por arquivo para melhorar performance em projetos grandes</p>
495
+ <ul>
496
+ <li>Classe WorkerPool com gerenciamento de workers paralelos</li>
497
+ <li>Sistema de lotes configurável (batchSize padrão: 10 arquivos por worker)</li>
498
+ <li>Timeout individual por analista (30s padrão) com cancelamento automático</li>
499
+ <li>Fallback automático para processamento sequencial quando workers desabilitados</li>
500
+ <li>Worker executor em JavaScript puro para threads separadas</li>
501
+ <li>Configuração centralizada via variáveis de ambiente</li>
502
+ <li>Função de conveniência <code>processarComWorkers()</code> para fácil integração</li>
503
+ <li>Estatísticas detalhadas do pool (workers ativos, erros, duração)</li>
504
+ <li>Testes completos com 9 cenários cobrindo configuração e processamento</li>
505
+ </ul>
506
+ </li>
507
+ <li><p><strong>Sistema de Schema Versioning</strong> Versionamento completo dos relatórios JSON</p>
508
+ <ul>
509
+ <li>Metadados de versão (<code>_schema</code>) em todos os relatórios JSON</li>
510
+ <li>Validação automática de schema com compatibilidade backward</li>
511
+ <li>Migração automática de relatórios legados</li>
512
+ <li>Utilitários para leitura de relatórios versionados</li>
513
+ <li>Integração com <code>gerador-relatorio.ts</code> e <code>relatorio-arquetipos.ts</code></li>
514
+ <li>Testes completos (27 testes passando)</li>
515
+ </ul>
516
+ </li>
517
+ <li><p><strong>Sistema de Pontuação Adaptativa</strong> Pontuação inteligente baseada no tamanho do projeto</p>
518
+ <ul>
519
+ <li>Constantes adaptativas baseadas em número de arquivos e diretórios</li>
520
+ <li>Sistema de fatores escaláveis (1x a 5x) para diferentes tamanhos de projeto</li>
521
+ <li>Configuração centralizada em <code>configuracao-pontuacao.ts</code> com 3 modos</li>
522
+ <li>Pesos de arquétipo recalibrados para maior realismo</li>
523
+ <li>Sistema de confiança inteligente com ajustes contextuais</li>
524
+ </ul>
525
+ </li>
526
+ <li><p><strong>Correção Crítica</strong> Exclusão padrão de <code>node_modules</code> no comando <code>diagnosticar</code></p>
527
+ <ul>
528
+ <li>Aplicação automática de padrões de exclusão padrão quando nenhum filtro é especificado</li>
529
+ <li>Redução de ~70% nos arquivos escaneados (2111 → 633 arquivos)</li>
530
+ <li>Manutenção da compatibilidade com filtros explícitos</li>
531
+ <li>Validação através de testes específicos</li>
532
+ </ul>
533
+ </li>
534
+ </ul>
535
+ <h3>Alterado</h3>
536
+ <ul>
537
+ <li><strong>Correção de Exclusão Padrão</strong> Comando <code>diagnosticar</code> agora aplica corretamente padrões de exclusão padrão (<code>node_modules/**</code>, <code>dist/**</code>, <code>coverage/**</code>, etc.) quando nenhum filtro explícito é fornecido</li>
538
+ <li><strong>Timeout por Analista</strong> Implementado timeout individual de 30 segundos por analista com cancelamento automático</li>
539
+ </ul>
540
+ <h3>Corrigido</h3>
541
+ <ul>
542
+ <li><strong>Problema de Exclusão</strong> Correção crítica onde <code>node_modules</code> era escaneado mesmo sem filtros explícitos devido a configuração vazia de <code>CLI_EXCLUDE_PATTERNS</code></li>
543
+ </ul>
544
+ <h2>[0.1.0] - 2025-08-18</h2>
545
+ <h3>Adicionado</h3>
546
+ <ul>
547
+ <li>CLI inicial com comandos: <code>diagnosticar</code>, <code>guardian</code>, <code>podar</code>, <code>analistas</code>, <code>perf</code>.</li>
548
+ <li>Biblioteca inicial de analistas (padrões de uso, funções longas, TODOs, estrutura, dependências).</li>
549
+ <li>Guardian com baseline e diffs; saída <code>--json</code>.</li>
550
+ </ul>
551
+ <h3>Infra</h3>
552
+ <ul>
553
+ <li>CI: lint, typecheck, testes, cobertura e gates.</li>
554
+ <li>Licenças e avisos de terceiros; scripts utilitários.</li>
555
+ </ul>
556
+ <hr>
557
+ 0:{"P":null,"c":["","changelog",""],"q":"","i":false,"f":[[["",{"children":["changelog",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3uta7d_6k863-.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/05-c3ty_6dwfk.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"pt-BR","children":[["$","head",null,{"children":["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css","crossOrigin":"anonymous","referrerPolicy":"no-referrer"}]}],["$","body",null,{"children":["$","main",null,{"className":"flex-1 w-full","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"min-h-screen bg-canvas text-emphasis","children":[["$","header",null,{"className":"border-b border-border","children":["$","div",null,{"className":"max-w-4xl mx-auto px-6 py-4 flex items-center gap-3","children":[["$","i",null,{"className":"fa-solid fa-fire text-accent"}],["$","$L4",null,{"href":"/","className":"text-sm font-semibold text-emphasis hover:text-accent transition-colors","children":"Tutanus"}],["$","span",null,{"className":"text-muted text-xs","children":"/"}],["$","span",null,{"className":"text-xs text-muted","children":"Changelog"}]]}]}],["$","main",null,{"className":"max-w-4xl mx-auto px-6 py-12","children":[["$","div",null,{"className":"flex items-center gap-3 mb-8","children":[["$","i",null,{"className":"fa-solid fa-timeline text-accent text-xl"}],["$","h1",null,{"className":"text-2xl font-bold","children":"Changelog"}]]}],["$","div",null,{"className":"changelog-content text-sm text-muted leading-relaxed","dangerouslySetInnerHTML":{"__html":"$5"}}],"$L6"]}],"$L7"]}],["$L8"],"$L9"]}],{},null,false,null]},null,false,"$@a"]},null,false,null],"$Lb",false]],"m":"$undefined","G":["$c",["$Ld"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"sHP-sIMshwWXMCtdszRWm"}
558
+ e:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"OutletBoundary"]
559
+ f:"$Sreact.suspense"
560
+ 12:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ViewportBoundary"]
561
+ 14:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
562
+ :HL["/_next/static/media/icon-1.008jpsm4iakzh.png","image"]
563
+ 6:["$","div",null,{"className":"mt-12 pt-6 border-t border-border text-center","children":["$","$L4",null,{"href":"/","className":"text-accent text-sm hover:underline","children":[["$","i",null,{"className":"fa-solid fa-arrow-left mr-1"}],"Voltar para a página inicial"]}]}]
564
+ 7:["$","footer",null,{"className":"border-t border-border","children":["$","div",null,{"className":"max-w-6xl mx-auto px-6 py-8","children":["$","div",null,{"className":"flex flex-col sm:flex-row items-center justify-between gap-4","children":[["$","div",null,{"className":"flex items-center gap-3","children":[["$","img",null,{"src":"/_next/static/media/icon-1.008jpsm4iakzh.png","alt":"Tutanus","className":"w-5 h-5"}],["$","span",null,{"className":"text-sm font-semibold text-emphasis","children":"Black Diaz"}],["$","span",null,{"className":"text-xs text-muted","children":"MIT-0"}]]}],["$","div",null,{"className":"flex items-center gap-5 text-xs text-muted","children":[["$","a",null,{"href":"https://github.com/blue-diaz/tutanus","target":"_blank","rel":"noopener noreferrer","className":"hover:text-accent transition-colors","children":[["$","i",null,{"className":"fa-brands fa-github mr-1"}],"GitHub"]}],["$","a",null,{"href":"/privacy-policy","className":"hover:text-accent transition-colors","children":[["$","i",null,{"className":"fa-solid fa-shield mr-1"}],"Privacidade"]}],["$","a",null,{"href":"/changelog","className":"hover:text-accent transition-colors","children":[["$","i",null,{"className":"fa-solid fa-timeline mr-1"}],"Changelog"]}],["$","a",null,{"href":"/terms-of-use","className":"hover:text-accent transition-colors","children":[["$","i",null,{"className":"fa-solid fa-file-lines mr-1"}],"Termos"]}]]}]]}]}]}]
565
+ 8:["$","script","script-0",{"src":"/_next/static/chunks/1rxncug86bump.js","async":true,"nonce":"$undefined"}]
566
+ 9:["$","$Le",null,{"children":["$","$f",null,{"name":"Next.MetadataOutlet","children":"$@10"}]}]
567
+ 11:[]
568
+ a:"$W11"
569
+ b:["$","$1","h",{"children":[null,["$","$L12",null,{"children":"$L13"}],["$","div",null,{"hidden":true,"children":["$","$L14",null,{"children":["$","$f",null,{"name":"Next.Metadata","children":"$L15"}]}]}],null]}]
570
+ d:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3uta7d_6k863-.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]
571
+ 13:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
572
+ 10:null
573
+ 15:[["$","title","0",{"children":"Tutanus — CLI de Análise, Diagnóstico e Manutenção de Projetos"}],["$","meta","1",{"name":"description","content":"CLI modular para análise estática, diagnóstico de segurança e manutenção de projetos JavaScript/TypeScript e multi-stack. Suporte a CI/CD, plugins, Guardian e mais."}]]
@@ -0,0 +1,5 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ViewportBoundary"]
3
+ 3:I[97367,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
4
+ 4:"$Sreact.suspense"
5
+ 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Tutanus — CLI de Análise, Diagnóstico e Manutenção de Projetos"}],["$","meta","1",{"name":"description","content":"CLI modular para análise estática, diagnóstico de segurança e manutenção de projetos JavaScript/TypeScript e multi-stack. Suporte a CI/CD, plugins, Guardian e mais."}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"sHP-sIMshwWXMCtdszRWm"}
@@ -0,0 +1,6 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[39756,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
3
+ 3:I[37457,["/_next/static/chunks/05-c3ty_6dwfk.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
4
+ :HL["/_next/static/chunks/3uta7d_6k863-.css","style"]
5
+ :HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css","style",{"crossOrigin":"anonymous","referrerPolicy":"no-referrer"}]
6
+ 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/3uta7d_6k863-.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/05-c3ty_6dwfk.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true}]],["$","html",null,{"lang":"pt-BR","children":[["$","head",null,{"children":["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css","crossOrigin":"anonymous","referrerPolicy":"no-referrer"}]}],["$","body",null,{"children":["$","main",null,{"className":"flex-1 w-full","children":["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"sHP-sIMshwWXMCtdszRWm"}
@@ -0,0 +1,4 @@
1
+ :HL["/_next/static/chunks/3uta7d_6k863-.css","style"]
2
+ :HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css","style",{"crossOrigin":"anonymous","referrerPolicy":"no-referrer"}]
3
+ :HL["/_next/static/media/icon-1.008jpsm4iakzh.png","image"]
4
+ 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"changelog","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"sHP-sIMshwWXMCtdszRWm"}