@gitpagedocs/cli 0.0.9 → 0.0.11

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.
@@ -1,4 +1,14 @@
1
+ import { practicalPt } from "./practical-pt.mjs";
2
+ import { operationsPt } from "./operations-pt.mjs";
3
+ import { overviewsPt } from "./overviews-pt.mjs";
4
+ import { CONTENT_BLOCKS_DOCS } from "./content-blocks.mjs";
5
+ import { PARENT_MENU_JSON } from "./configuration-examples.mjs";
6
+
1
7
  export const docsPt = {
8
+ ...practicalPt,
9
+ ...operationsPt,
10
+ ...overviewsPt,
11
+ contentBlocks: CONTENT_BLOCKS_DOCS.pt,
2
12
  pdf: `# Documentos PDF
3
13
 
4
14
  PDF é um tipo de conteúdo próprio, junto com Markdown, HTML, código-fonte, vídeo e áudio. A prévia usa o visualizador nativo de PDF do navegador. As ações de baixar e abrir em nova aba são configuráveis de forma independente.
@@ -24,13 +34,15 @@ Adicione este bloco dentro de \`site\` em \`gitpagedocs/config.json\`:
24
34
  }
25
35
  \`\`\`
26
36
 
27
- \`enabled\` é a chave geral do conteúdo PDF. Os demais campos controlam a prévia, o botão de download e o link de nova aba. Todo campo omitido assume \`true\`, inclusive em configurações antigas.
37
+ \`enabled\` é a chave geral do conteúdo PDF. Os demais campos controlam a prévia, o botão de download e o botão de nova aba. Todo campo omitido assume \`true\`, inclusive em configurações antigas.
28
38
 
29
39
  A precedência das ações é \`rota.pdf.<flag>\` > \`site.pdf.<flag>\` > \`true\`. Um \`true\` explícito na rota habilita aquela ação mesmo quando o padrão do site é \`false\`; \`site.pdf.enabled: false\` continua desabilitando todos os PDFs. Sem caminho para o idioma selecionado, o PDF fica indisponível; não há fallback automático de idioma.
30
40
 
41
+ As ações PDF usam ícones por padrão. Configure \`site.icons.PdfDownload\` (\`LuDownload\`) e \`site.icons.PdfOpenInNewTab\` (\`LuExternalLink\`) individualmente com \`reactIcon\`, \`tag\`, \`size\`, \`colorDark\` e \`colorLight\`. Por exemplo, \`"PdfDownload": { "reactIcon": false }\` exibe texto no download enquanto a nova aba continua com ícone. A aparência não altera as opções de habilitação acima.
42
+
31
43
  ## Exemplo de rota e menu
32
44
 
33
- Em \`gitpagedocs/docs/versions/0.0.9/config.json\`, mantenha as listas de rotas e menus no nível principal:
45
+ Em \`gitpagedocs/docs/versions/0.0.11/config.json\`, mantenha as listas de rotas e menus no nível principal:
34
46
 
35
47
  \`\`\`json
36
48
  {
@@ -39,9 +51,9 @@ Em \`gitpagedocs/docs/versions/0.0.9/config.json\`, mantenha as listas de rotas
39
51
  "title": { "en": "Project guide (English)", "pt": "Guia do projeto (inglês)", "es": "Guía del proyecto (inglés)" },
40
52
  "pdf": {
41
53
  "pathPdf": {
42
- "en": "gitpagedocs/docs/versions/0.0.9/en/gitpagedocs-project-guide.pdf",
43
- "pt": "gitpagedocs/docs/versions/0.0.9/en/gitpagedocs-project-guide.pdf",
44
- "es": "gitpagedocs/docs/versions/0.0.9/en/gitpagedocs-project-guide.pdf"
54
+ "en": "gitpagedocs/docs/versions/0.0.11/en/gitpagedocs-project-guide.pdf",
55
+ "pt": "gitpagedocs/docs/versions/0.0.11/en/gitpagedocs-project-guide.pdf",
56
+ "es": "gitpagedocs/docs/versions/0.0.11/en/gitpagedocs-project-guide.pdf"
45
57
  },
46
58
  "previewEnabled": true,
47
59
  "downloadEnabled": true,
@@ -65,9 +77,9 @@ As flags opcionais da rota ficam dentro de \`pdf\`. Apresentação compartilhada
65
77
 
66
78
  Caminhos relativos à raiz do repositório que começam com \`gitpagedocs/\` são copiados para os assets públicos do visualizador ao iniciar ou compilar o Next.js. A URL respeita o subdiretório de publicação no GitHub Pages. Versione o PDF no Git e publique-o junto com a documentação gerada. Arquivos fora de \`gitpagedocs/\` devem estar em \`frontend/public/\` do visualizador ou acessíveis por uma URL HTTP(S).
67
79
 
68
- Use a URL do PDF binário, não uma página HTML de prévia do repositório. Em repositórios remotos, o caminho configurado é resolvido nesse repositório. Tanto a prévia quanto o download buscam os bytes do arquivo, portanto um servidor externo precisa permitir CORS nas duas operações. O visualizador valida a assinatura PDF e cria uma URL Blob temporária com tipo \`application/pdf\` para a prévia nativa; essa URL é liberada ao trocar ou fechar o documento. A política de incorporação e os cabeçalhos de tipo/disposição do servidor de origem não controlam essa prévia Blob.
80
+ Use a URL do PDF binário, não uma página HTML de prévia do repositório. Em repositórios remotos, o caminho configurado é resolvido nesse repositório. Prévia, download e abertura em nova aba buscam os bytes do arquivo, portanto um servidor externo precisa permitir CORS nas três ações. O visualizador valida a assinatura PDF e cria uma URL Blob temporária com tipo \`application/pdf\`. A prévia e a nova aba usam o visualizador nativo de PDF do navegador; a política de incorporação e os cabeçalhos de tipo/disposição do servidor de origem não controlam essa exibição Blob.
69
81
 
70
- O link de nova aba abre diretamente a URL original. Seu comportamento depende do navegador e dos cabeçalhos \`Content-Type\` e \`Content-Disposition\`; uma URL raw pode baixar o arquivo em vez de exibi-lo. O link direto continua disponível se a prévia ou o download falhar, exceto quando essa ação está desabilitada.
82
+ O botão de nova aba abre o Blob PDF validado em vez de navegar para a URL raw do repositório. Isso também funciona com a prévia desabilitada: o carregamento começa quando o leitor baixa ou abre o documento. Os bytes já carregados são reutilizados para o PDF atual. Falhas de rede/CORS, PDFs inválidos e bloqueio da nova aba geram um erro visível; não há fallback automático para a URL raw. O suporte nativo a PDF e as preferências de download do navegador ainda determinam como a nova aba exibe o arquivo.
71
83
 
72
84
  ## Leitura e diagnóstico
73
85
 
@@ -75,19 +87,19 @@ O link de nova aba abre diretamente a URL original. Seu comportamento depende do
75
87
  - A prévia não converte PDF em Markdown. Modo foco, navegação por seção, cópia de Markdown e narração atuam em documentos Markdown, não no PDF incorporado.
76
88
  - Desabilitar a prévia pode manter download e nova aba disponíveis. Desabilitar todas as ações deixa o PDF sem controle interativo.
77
89
  - Ocultar um botão não controla acesso. PDFs hospedados publicamente continuam acessíveis pela URL. Documentos confidenciais precisam de hospedagem protegida.
78
- - Se a prévia estiver vazia, use a ação de nova aba, confira se o caminho retorna um PDF e examine os cabeçalhos do servidor. Falhas de download são informadas na página.
90
+ - Se a prévia estiver vazia, confira se o caminho retorna um PDF e permite acesso por CORS; depois tente a nova aba. Permita pop-ups para o site se o navegador bloquear essa ação. Falhas de download e abertura são informadas na página.
79
91
  `,
80
92
  index: `# Git Page Docs
81
93
 
82
- Git Page Docs e um runtime de documentacao multi-idioma para repositorios que possuem a pasta \`gitpagedocs/\`.
94
+ Git Page Docs é um runtime de documentação multi-idioma para repositórios que possuem a pasta \`gitpagedocs/\`.
83
95
 
84
96
  ## O que este projeto entrega
85
97
 
86
- - Renderizacao markdown em varios idiomas (\`en\`, \`pt\`, \`es\`)
87
- - Roteamento por versao (\`/v/:versao\`)
98
+ - Renderização markdown em varios idiomas (\`en\`, \`pt\`, \`es\`)
99
+ - Roteamento por versão (\`/v/:versao\`)
88
100
  - Sistema de temas por templates JSON
89
- - Execucao local e em GitHub Pages
90
- - Busca de repositorio + renderizacao remota opcional
101
+ - Execução local e em GitHub Pages
102
+ - Busca de repositório + renderização remota opcional
91
103
 
92
104
  ## Contrato de pastas
93
105
 
@@ -100,14 +112,14 @@ O runtime espera esta estrutura:
100
112
  - \`gitpagelayouts/layoutsConfig.json\`
101
113
  - \`gitpagelayouts/templates/*.json\`
102
114
 
103
- ## Navegacao rapida
115
+ ## Navegação rápida
104
116
 
105
117
  - Abra **Primeiros passos** para setup local.
106
- - Abra **Configuracao** para detalhes completos do \`config.json\`.
107
- - Abra **Publicacao** para comportamento local/producao/GitHub Pages.
108
- - Abra **Arquitetura** para mapa de codigo e fluxo de dados.
118
+ - Abra **Configuração** para detalhes completos do \`config.json\`.
119
+ - Abra **Publicação** para comportamento local/produção/GitHub Pages.
120
+ - Abra **Arquitetura** para mapa de código e fluxo de dados.
109
121
  - Abra **Temas e layouts** para autoria de templates.
110
- - Abra **Rotas autorizadas** para configurar chave, papeis e autenticacao externa.
122
+ - Abra **Rotas autorizadas** para configurar chave, papeis e autenticação externa.
111
123
  - Abra **FAQ** para troubleshooting.
112
124
 
113
125
  ## Referências detalhadas
@@ -115,9 +127,17 @@ O runtime espera esta estrutura:
115
127
  - **Referência da CLI**: instalação, todos os comandos e flags de compatibilidade.
116
128
  - **Servidor MCP**: cliente, 20 tools, 7 resources e configuração de provedores.
117
129
  - **Navegação e submenus**: árvores recursivas, URLs e sobrescritas dos breadcrumbs.
130
+ - **Blocos de conteúdo ordenados**: repita e ordene Markdown, HTML, vídeo, áudio e PDF na mesma página; posicione títulos e descrições configurados independentemente.
118
131
  - **Modo foco**: copiar/baixar Markdown e navegar por seção/documento.
119
132
  - **Acessibilidade e narração**: vozes do navegador, controles e interação com mídias.
120
133
  - **Documentos PDF**: prévia nativa, download/nova aba e o guia incluído em inglês.
134
+ - **Receitas de configuração**: um site multilíngue completo e um menu com seções dentro de seções.
135
+ - **Migração e compatibilidade**: atualizar configurações desde a versão 0.0.1 preservando seu conteúdo.
136
+ - **Solução de problemas**: UTF-8, caminhos locais e do Pages, carregamento de PDF, vozes e inicialização do MCP.
137
+ - **Contribuição e validação**: arquivos fonte, geração, contratos públicos e verificações de publicação.
138
+ - **Containers HTML**: páginas locais e externas, configuração de rotas/menus e o exemplo interativo DOOM.
139
+
140
+ O menu gerado mantém Primeiros passos e Visão geral do projeto no início. Guias contém Configure seu site, Leia e explore e Automatize e integre; cada categoria contém suas páginas relacionadas. Operação e desenvolvimento agrupa publicação, manutenção e contribuição. Git e GitHub contém os exemplos de repositório. As categorias podem conter outras categorias sem um limite fixo de níveis.
121
141
  `,
122
142
  gettingStarted: `# Primeiros passos
123
143
 
@@ -167,59 +187,59 @@ O repositório fixa o pnpm em \`packageManager\`. \`pnpm dev\` ativa a busca de
167
187
 
168
188
  Use Configuração para idiomas, ícones, navegação, foco e narração; Funcionalidades para CLI e MCP; Temas e layouts para tokens visuais; Perguntas frequentes para diagnóstico.
169
189
  `,
170
- projectOverview: `# Visao geral do projeto
190
+ projectOverview: `# Visão geral do projeto
171
191
 
172
- Git Page Docs e um monorepo pnpm + turborepo que transforma a pasta \`gitpagedocs/\` de um repositorio em um site de documentacao multilinguagem e versionado — com assistente de IA integrado e um servidor MCP (Model Context Protocol).
192
+ Git Page Docs é um monorepo pnpm + turborepo que transforma a pasta \`gitpagedocs/\` de um repositório em um site de documentação multilinguagem e versionado — com assistente de IA integrado e um servidor MCP (Model Context Protocol).
173
193
 
174
194
  ## Pacotes do monorepo
175
195
 
176
196
  - **frontend/** — visualizador Next.js 15 (App Router, React 19), exportado estaticamente para o GitHub Pages.
177
197
  - **cli/** — o pacote npm publicado \`@gitpagedocs/cli\` (\`npm install -g @gitpagedocs/cli\`): gera a estrutura de docs, documenta com IA, configura o Pages e roda o servidor MCP.
178
- - **tools/** — \`@gitpagedocs/tools\`, o nucleo de logica compartilhado: sistema de IA com 14 provedores, cofre de credenciais criptografado, loader de config, caches e logger.
198
+ - **tools/** — \`@gitpagedocs/tools\`, o núcleo de lógica compartilhado: sistema de IA com 14 provedores, cofre de credenciais criptografado, loader de config, caches e logger.
179
199
  - **mcp/** — \`@gitpagedocs/mcp\`, servidor Model Context Protocol (20 ferramentas + 7 recursos).
180
- - **gitpagedocs/** — o contrato do usuario: \`config.json\`, docs versionados e layouts.
200
+ - **gitpagedocs/** — o contrato do usuário: \`config.json\`, docs versionados e layouts.
181
201
 
182
202
  ## Stack
183
203
 
184
- - Next.js 15 (App Router) + React 19 + TypeScript; exportacao estatica para GitHub Pages
204
+ - Next.js 15 (App Router) + React 19 + TypeScript; exportação estática para GitHub Pages
185
205
  - gray-matter + marked para Markdown; react-icons
186
206
  - pnpm workspaces + turborepo; Vitest + Playwright; ESLint
187
207
 
188
208
  ## Destaques
189
209
 
190
- - Multilinguagem (\`en\`, \`pt\`, \`es\`) e rotas por versao (\`/v/:version\`)
210
+ - Multilinguagem (\`en\`, \`pt\`, \`es\`) e rotas por versão (\`/v/:version\`)
191
211
  - Sistema de IA com 14 provedores (OpenAI, Anthropic, Gemini, Ollama, Mistral, DeepSeek, Cohere, Groq, xAI e mais) com streaming
192
212
  - Chaves de IA **criptografadas em repouso** (AES-256-GCM) atras de uma senha local — nunca em texto puro
193
213
  - **Drawer de chat de IA** nos docs + um **console \`/ai\`** dedicado
194
- - Sistema de 64 temas (variantes escuras e claras); execucao local e no GitHub Pages
214
+ - Sistema de 64 temas (variantes escuras e claras); execução local e no GitHub Pages
195
215
  `,
196
216
  functionalities: `# Funcionalidades
197
217
 
198
- Referencia completa de opcoes da CLI, chaves de configuracao e recursos do runtime.
218
+ Referência completa de opções da CLI, chaves de configuração e recursos do runtime.
199
219
 
200
220
  ## Linha de comando
201
221
 
202
222
  Consulte **Referência da CLI** para comandos, flags, exemplos e compatibilidade. Consulte **Servidor MCP** para integração com editores.
203
223
 
204
- ## Tipos de conteudo
224
+ ## Tipos de conteúdo
205
225
 
206
- | Tipo | Chave config | Descricao |
226
+ | Tipo | Chave config | Descrição |
207
227
  |------|--------------|-----------|
208
228
  | Markdown | \`routes-md\` | Arquivos .md com \`path\` por idioma |
209
229
  | HTML | \`routes-html\` | \`path\` local ou \`url\` externa |
210
- | Video | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
211
- | Audio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
230
+ | Vídeo | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
231
+ | Áudio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
212
232
  | PDF | \`routes-pdf\` | \`pdf.pathPdf\` por idioma; prévia nativa e download |
213
233
 
214
- ## Visualizador de codigo fonte
234
+ ## Visualizador de código fonte
215
235
 
216
- O config da versao pode renderizar um container **Codigo fonte** via \`routes-source-viewer\` e \`menus-header-source-viewer\`. O viewer le a arvore do repositorio no GitHub em tempo de execucao e aplica o tema atual da documentacao.
236
+ O config da versão pode renderizar um container **Código fonte** via \`routes-source-viewer\` e \`menus-header-source-viewer\`. O viewer lê a árvore do repositório no GitHub em tempo de execução e aplica o tema atual da documentação.
217
237
 
218
- - Arvore do repositorio a partir de \`source-viewer-path\`; a branch padrao e \`main\`
219
- - Navegacao por pastas e filtro de arquivos
220
- - Listagem de diretorios no estilo GitHub
221
- - Renderizacao de codigo com numeros de linha
222
- - Alternancia preview/codigo para Markdown, incluindo \`README.md\`
238
+ - Árvore do repositório a partir de \`source-viewer-path\`; a branch padrão é \`main\`
239
+ - Navegação por pastas e filtro de arquivos
240
+ - Listagem de diretórios no estilo GitHub
241
+ - Renderização de código com números de linha
242
+ - Alternância preview/código para Markdown, incluindo \`README.md\`
223
243
  - Pastas recolhiveis na lateral
224
244
 
225
245
  ## Chaves de config (site)
@@ -229,92 +249,108 @@ O config da versao pode renderizar um container **Codigo fonte** via \`routes-so
229
249
  - \`ProjectLink\`, \`layoutsConfigPathOficial\`, \`layoutsConfigPath\`
230
250
  - Idiomas: \`site.languages\` (liga/desliga cada um); textos da UI: \`gitpagedocs/langs/<lang>.json\`
231
251
 
232
- ## Reproducao de midia (um som por vez)
252
+ ## Reprodução de midia (um som por vez)
233
253
 
234
- \`site.mediaExclusivePlayback\` (padrao \`true\`): dar play num video de rota pausa o radio e as trilhas de audio, e dar play no radio ou numa trilha de audio pausa o video. Funciona com YouTube e Vimeo (pelas APIs dos players), arquivos nativos (\`mp4\`, \`webm\`, …) e qualquer outro embed.
254
+ \`site.mediaExclusivePlayback\` (padrão \`true\`): dar play num vídeo de rota pausa o rádio e as trilhas de áudio, e dar play no rádio ou numa trilha de áudio pausa o vídeo. Funciona com YouTube e Vimeo (pelas APIs dos players), arquivos nativos (\`mp4\`, \`webm\`, …) e qualquer outro embed.
235
255
 
236
- Para mostrar um video sem som enquanto o radio ou uma trilha de audio o explica, use \`"muted": true\` no objeto \`video\` da rota: o video roda so a imagem e fica fora da regra. \`"mediaExclusivePlayback": false\` desliga a regra no site inteiro.
256
+ Para mostrar um vídeo sem som enquanto o rádio ou uma trilha de áudio o explica, use \`"muted": true\` no objeto \`video\` da rota: o vídeo roda só a imagem e fica fora da regra. \`"mediaExclusivePlayback": false\` desliga a regra no site inteiro.
237
257
 
238
- ## Variaveis de ambiente
258
+ ## Variáveis de ambiente
239
259
 
240
- - \`GITPAGEDOCS_REPOSITORY_SEARCH\` – busca de repositorio (local)
260
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH\` – busca de repositório (local)
241
261
  - \`GITHUB_ACTIONS\` – modo build GitHub Pages
242
262
 
243
263
  ## Assistente de IA
244
264
 
245
- Os docs trazem um assistente de IA em duas superficies: um **chat drawer** dentro dos docs (botao de chat de IA na barra lateral, ativado por \`site.AiChatEnabled\`) e uma pagina **console \`/ai\`** dedicada.
265
+ Os docs trazem um assistente de IA em duas superfícies: um **chat drawer** dentro dos docs (botão de chat de IA na barra lateral, ativado por \`site.AiChatEnabled\`) e uma página **console \`/ai\`** dedicada.
246
266
 
247
- - **14 provedores** em um unico core compartilhado: OpenAI, Anthropic, Gemini, OpenRouter, Ollama, Azure OpenAI, Mistral, DeepSeek, Cohere, Groq, xAI, Together, Fireworks, Perplexity.
248
- - **Escolha de modelo** — a partir do catalogo de cada provedor (\`gitpagedocs models <provedor>\`); um id de modelo salvo que o provedor aposentou e trocado pelo padrao do provedor automaticamente.
267
+ - **14 provedores** em um único core compartilhado: OpenAI, Anthropic, Gemini, OpenRouter, Ollama, Azure OpenAI, Mistral, DeepSeek, Cohere, Groq, xAI, Together, Fireworks, Perplexity.
268
+ - **Escolha de modelo** — a partir do catálogo de cada provedor (\`gitpagedocs models <provedor>\`); um id de modelo salvo que o provedor aposentou é trocado pelo padrão do provedor automaticamente.
249
269
  - **Criptografia em repouso** — sua chave de API e selada com AES-256-GCM atras de uma **senha local** e nunca fica em texto puro nem em logs.
250
- - **Bloqueio por inatividade** — o chat drawer se bloqueia sozinho apos \`site.AiChatAutoLockSeconds\` segundos sem uso (padrao 30, \`0\` desativa): um modal centralizado com contagem regressiva, no seu idioma, permite cancelar ou bloquear agora, e desbloquear pede a senha de novo.
251
- - **Provedores resilientes** — erros transitorios do provedor sao repetidos (3 tentativas) e uma falha final vira uma mensagem simples terminando em "Tente novamente!".
252
- - **Geracao de documentacao com IA** — \`gitpagedocs ai\` varre os caminhos escolhidos e escreve markdown multilingue (pt/en/es); reutilizavel via \`.gitpagedocsconfig\`, cuja chave de API fica selada no cofre criptografado \`.gitpagedocsvault\` (a senha do cofre e pedida em toda execucao). \`gitpagedocs chat\` leva o mesmo assistente ao terminal.
270
+ - **Bloqueio por inatividade** — o chat drawer se bloqueia sozinho após \`site.AiChatAutoLockSeconds\` segundos sem uso (padrão 30, \`0\` desativa): um modal centralizado com contagem regressiva, no seu idioma, permite cancelar ou bloquear agora, e desbloquear pede a senha de novo.
271
+ - **Provedores resilientes** — erros transitórios do provedor são repetidos (3 tentativas) e uma falha final vira uma mensagem simples terminando em "Tente novamente!".
272
+ - **Geração de documentação com IA** — \`gitpagedocs ai\` varre os caminhos escolhidos e escreve markdown multilíngue (pt/en/es); reutilizável via \`.gitpagedocsconfig\`, cuja chave de API fica selada no cofre criptografado \`.gitpagedocsvault\` (a senha do cofre é pedida em toda execução). \`gitpagedocs chat\` leva o mesmo assistente ao terminal.
253
273
 
254
274
  ## Servidor MCP
255
275
 
256
- \`gitpagedocs mcp start\` sobe um servidor Model Context Protocol (stdio) expondo **20 tools** (sistema de arquivos, IA, geracao/analise de docs) e **7 resources** (\`project://structure|docs|config|repository|readme|ai/providers|ai/models\`) para editores e agentes de IA.
276
+ \`gitpagedocs mcp start\` sobe um servidor Model Context Protocol (stdio) expondo **20 tools** (sistema de arquivos, IA, geração/análise de docs) e **7 resources** (\`project://structure|docs|config|repository|readme|ai/providers|ai/models\`) para editores e agentes de IA.
257
277
  `,
258
- configuration: `# Configuracao
278
+ configuration: `# Configuração
259
279
 
260
- A configuracao de runtime fica em \`gitpagedocs/config.json\`. Os textos da UI ficam ao lado, um arquivo por idioma.
280
+ A configuração de runtime fica em \`gitpagedocs/config.json\`. Os textos da UI ficam ao lado, um arquivo por idioma.
261
281
 
262
282
  ## Idiomas (\`site.languages\` + \`langs/\`)
263
283
 
264
- - \`site.languages\` em \`gitpagedocs/config.json\` liga (\`true\`) ou desliga (\`false\`) cada idioma, na ordem do menu: \`{ "languages": { "en": true, "pt": true, "es": false } }\`. Um idioma em \`false\` some do seletor de idiomas e seus textos nao sao carregados, mesmo que os docs existam.
265
- - \`gitpagedocs/langs/<lang>.json\` guarda os textos daquele idioma: \`langmenu\` (cabecalho, busca, visualizador de codigo, player de audio, chat de IA e acesso aos docs) e \`translations\` (\`notFound\`, \`navigation\`, \`footer\`).
284
+ - \`site.languages\` em \`gitpagedocs/config.json\` liga (\`true\`) ou desliga (\`false\`) cada idioma, na ordem do menu: \`{ "languages": { "en": true, "pt": true, "es": false } }\`. Um idioma em \`false\` some do seletor de idiomas e seus textos não são carregados, mesmo que os docs existam.
285
+ - \`gitpagedocs/langs/<lang>.json\` guarda os textos daquele idioma: \`langmenu\` (cabeçalho, busca, visualizador de código, player de áudio, chat de IA e acesso aos docs) e \`translations\` (\`notFound\`, \`navigation\`, \`footer\`).
266
286
  - Para adicionar um idioma, crie \`langs/<lang>.json\` e inclua \`"<lang>": true\` em \`site.languages\`.
267
- - Arquivos \`config.json\` antigos que ainda trazem \`site.langmenu\` / \`translations\` inline continuam funcionando; quando os dois existem, os arquivos de \`langs/\` prevalecem e qualquer chave ausente e preenchida a partir da versao atual.
287
+ - Arquivos \`config.json\` antigos que ainda trazem \`site.langmenu\` / \`translations\` inline continuam funcionando; quando os dois existem, os arquivos de \`langs/\` prevalecem e qualquer chave ausente é preenchida a partir da versão atual.
268
288
 
269
- ## Secao \`site\`
289
+ ## Seção \`site\`
270
290
 
271
291
  Principais chaves:
272
292
 
273
- - \`name\`: titulo do projeto no UI
274
- - \`defaultLanguage\`: idioma padrao
293
+ - \`name\`: título do projeto no UI
294
+ - \`defaultLanguage\`: idioma padrão
275
295
  - \`HideThemeSelector\`: esconde/mostra seletor de tema
276
296
  - \`ThemeDefault\`: id do tema inicial
277
297
  - \`ThemeModeDefault\`: modo inicial (\`light\` ou \`dark\`)
278
- - \`ProjectLink\`: URL de repositorio para acoes no cabecalho
279
- - \`docsVersion\`: versao inicial selecionada
280
- - \`ActiveNavigation\`: habilita comportamento de anterior/proximo
298
+ - \`ProjectLink\`: URL de repositório para acoes no cabeçalho
299
+ - \`docsVersion\`: versão inicial selecionada
300
+ - \`ActiveNavigation\`: habilita a navegação rápida e o atalho Ctrl+K
281
301
  - \`FocusMode\`: habilita modo foco/leitura
282
- - \`icons\`: icones do cabecalho. \`icons.defaults\` guarda o que todos compartilham (\`reactIcon\`, \`colorDark\`, \`colorLight\`, \`size\`, \`imgDark\`, \`imgLight\`, \`imgWidth\`, \`imgHeight\`) e cada icone define seu \`tag\` e o que muda (\`null\` remove um campo). As chaves planas abaixo continuam valendo e vencem quando as duas formas existem.
283
- - \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamanho do icone principal
284
- - \`IconImageMenuHeaderLightImg\`, \`IconImageMenuHeaderDarkImg\`: icone principal (light/dark)
285
- - \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamanho do icone link do projeto
286
- - \`IconProjectLinkLightImg\`, \`IconProjectLinkDarkImg\`: icone link do projeto
287
- - \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamanho do icone links de versao
288
- - \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: icone links de versao
289
- - \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamanho do icone info
290
- - \`IconInfoHeaderMenuLightImg\`, \`IconInfoHeaderMenuDarkImg\`: icone info
291
- - \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamanho do icone preview
292
- - \`IconPreviewProjectLinkLightImg\`, \`IconPreviewProjectLinkDarkImg\`: icone preview
302
+ - \`icons\`: ícones do cabeçalho. \`icons.defaults\` guarda o que todos compartilham (\`reactIcon\`, \`colorDark\`, \`colorLight\`, \`size\`, \`imgDark\`, \`imgLight\`, \`imgWidth\`, \`imgHeight\`) e cada ícone define seu \`tag\` e o que muda (\`null\` remove um campo). As chaves planas abaixo continuam valendo e vencem quando as duas formas existem.
303
+ - \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamanho do ícone principal
304
+ - \`IconImageMenuHeaderLightImg\`, \`IconImageMenuHeaderDarkImg\`: ícone principal (light/dark)
305
+ - \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamanho do ícone link do projeto
306
+ - \`IconProjectLinkLightImg\`, \`IconProjectLinkDarkImg\`: ícone link do projeto
307
+ - \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamanho do ícone links de versão
308
+ - \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: ícone links de versão
309
+ - \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamanho do ícone info
310
+ - \`IconInfoHeaderMenuLightImg\`, \`IconInfoHeaderMenuDarkImg\`: ícone info
311
+ - \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamanho do ícone preview
312
+ - \`IconPreviewProjectLinkLightImg\`, \`IconPreviewProjectLinkDarkImg\`: ícone preview
293
313
  - \`layoutsConfigPath\`: fallback remoto para layouts
294
314
  - \`rendering\`: URL canonica publicada
295
315
 
296
- ## Controles de idioma, tema e foco
316
+ ## Controles de idioma, tema, foco, navegação rápida, PDF e documentos
297
317
 
298
- Em \`gitpagedocs/config.json\`, adicione estas entradas a \`site.icons\` para usar React Icons no seletor de idioma, no seletor de tema e no botao de foco:
318
+ Em \`gitpagedocs/config.json\`, estas entradas de \`site.icons\` configuram idioma, tema, foco, navegação Ctrl+K, ações PDF e navegação no rodapé dos documentos. Os oito controles usam React Icons por padrão:
299
319
 
300
320
  \`\`\`json
301
321
  {
302
322
  "site": {
303
323
  "icons": {
304
324
  "LanguageSelector": {
305
- "reactIcon": true, "tag": "FiGlobe", "size": "22px",
325
+ "reactIcon": true, "tag": "SiGoogletranslate", "size": "22px",
306
326
  "colorDark": "currentColor", "colorLight": "currentColor"
307
327
  },
308
328
  "ThemeSelector": {
309
- "reactIcon": true, "tag": "BsSunFill", "size": "22px",
329
+ "reactIcon": true, "tag": "LuPencil", "size": "22px",
310
330
  "colorDark": "currentColor", "colorLight": "currentColor"
311
331
  },
312
332
  "FocusMode": {
313
- "reactIcon": true, "tag": "MdFullscreen", "size": "22px",
333
+ "reactIcon": true, "tag": "LuBookOpen", "size": "22px",
314
334
  "colorDark": "currentColor", "colorLight": "currentColor"
315
335
  },
316
336
  "QuickNavigation": {
317
- "reactIcon": true, "tag": "FiSearch", "size": "22px",
337
+ "reactIcon": true, "tag": "LuSearch", "size": "22px",
338
+ "colorDark": "currentColor", "colorLight": "currentColor"
339
+ },
340
+ "PdfDownload": {
341
+ "reactIcon": true, "tag": "LuDownload", "size": "22px",
342
+ "colorDark": "currentColor", "colorLight": "currentColor"
343
+ },
344
+ "PdfOpenInNewTab": {
345
+ "reactIcon": true, "tag": "LuExternalLink", "size": "22px",
346
+ "colorDark": "currentColor", "colorLight": "currentColor"
347
+ },
348
+ "DocumentPrevious": {
349
+ "reactIcon": true, "tag": "LuChevronLeft", "size": "22px",
350
+ "colorDark": "currentColor", "colorLight": "currentColor"
351
+ },
352
+ "DocumentNext": {
353
+ "reactIcon": true, "tag": "LuChevronRight", "size": "22px",
318
354
  "colorDark": "currentColor", "colorLight": "currentColor"
319
355
  }
320
356
  }
@@ -322,74 +358,76 @@ Em \`gitpagedocs/config.json\`, adicione estas entradas a \`site.icons\` para us
322
358
  }
323
359
  \`\`\`
324
360
 
325
- Cada controle e independente: \`reactIcon: false\` preserva a aparencia atual com texto (padrao); \`true\` mostra o icone. Personalize \`tag\`, \`size\`, \`colorDark\` e \`colorLight\` por controle; \`currentColor\` acompanha o tema ativo. Os seletores com icone mantem seus menus e nomes acessiveis. \`site.FocusMode\` continua controlando se o modo foco esta habilitado; \`site.icons.FocusMode\` altera apenas a aparencia do botao.
361
+ Cada controle é independente: \`reactIcon: true\` mostra o ícone (padrão); \`false\` exibe texto. Personalize \`tag\`, \`size\`, \`colorDark\` e \`colorLight\` por controle; \`currentColor\` acompanha o tema ativo. Controles com ícone mantêm seus nomes acessíveis, e seletores mantêm os menus. O atalho Ctrl+K continua disponível. \`site.FocusMode\` ainda habilita o modo foco; \`site.icons.FocusMode\` só altera a aparência do botão. \`site.icons.PdfDownload\` e \`site.icons.PdfOpenInNewTab\` selecionam texto ou ícone de forma independente; as opções correspondentes em \`site.pdf\` e no \`pdf\` da rota controlam a disponibilidade de cada ação.
362
+
363
+ Configs compactos podem mover valores comuns para \`site.icons.defaults\`; campos omitidos herdam esses defaults. Defina \`reactIcon: false\` em uma entrada específica para substituir o ícone padrão por texto.
326
364
 
327
- ## Secao \`VersionControl\`
365
+ ## Seção \`VersionControl\`
328
366
 
329
367
  \`VersionControl.versions\` define:
330
368
 
331
- - \`id\`: identificador da versao
332
- - \`path\`: caminho do config da versao
369
+ - \`id\`: identificador da versão
370
+ - \`path\`: caminho do config da versão
333
371
  - links opcionais (\`ProjectLink\`, \`branch\`, \`release\`, \`commit\`)
334
372
  - metadados opcionais do source viewer (\`source-viewer\`, \`source-viewer-path\`)
335
373
 
336
- ## Navegacao e rotas
374
+ ## Navegação e rotas
337
375
 
338
376
  - \`routes\`: caminhos markdown por idioma (legado)
339
377
  - \`menus-header\`: menu hierarquico
340
- - \`translations\`: labels de UI para not-found e navegacao
378
+ - \`translations\`: labels de UI para not-found e navegação
341
379
 
342
- ## Autorizacao (config de versao)
380
+ ## Autorização (config de versão)
343
381
 
344
- - \`auth\`: configuracoes globais de autorizacao para a versao
382
+ - \`auth\`: configurações globais de autorização para a versão
345
383
  - \`auth.accessKeys\`: mapa de chaves usado por \`authorization.accessKeyId\`
346
384
  - \`auth.rolesStorageKey\`: chave de localStorage para bootstrap de papeis
347
385
  - \`auth.providers\`: adaptadores de provedor (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
348
386
 
349
- ## Tipos de conteudo (config de versao)
387
+ ## Tipos de conteúdo (config de versão)
350
388
 
351
- Configs de versao suportam multiplos tipos:
389
+ Configs de versão suportam múltiplos tipos:
352
390
 
353
391
  - \`routes-md\`: Rotas markdown com \`title\`, \`description\` (centralizados via \`titlePosition\`, \`descriptionPosition\`)
354
- - \`routes-source-viewer\`: Containers de codigo fonte com \`source-viewer: true\` e \`source-viewer-path\`
355
- - \`routes-html\`: Caminhos de paginas HTML por idioma
356
- - \`routes-video\`: Config de video com \`video.videoType\` (youtube, vimeo, mp4, etc.) e \`video.pathVideo\`
357
- - \`routes-audio\`: Config de audio com \`audio.audioType\` (youtube, mp3, etc.) e \`audio.pathAudio\`
392
+ - \`routes-source-viewer\`: Containers de código fonte com \`source-viewer: true\` e \`source-viewer-path\`
393
+ - \`routes-html\`: Caminhos de páginas HTML por idioma
394
+ - \`routes-video\`: Config de vídeo com \`video.videoType\` (youtube, vimeo, mp4, etc.) e \`video.pathVideo\`
395
+ - \`routes-audio\`: Config de áudio com \`audio.audioType\` (youtube, mp3, etc.) e \`audio.pathAudio\`
358
396
  - \`routes-pdf\`: PDF com \`pdf.pathPdf\` por idioma; consulte Documentos PDF.
359
- - \`authorization\` (md/html/video): guarda de acesso por chave, papeis e autenticacao externa
397
+ - \`authorization\` (md/html/vídeo): guarda de acesso por chave, papeis e autenticação externa
360
398
  - \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`, \`menus-header-pdf\`: menus por tipo
361
- - \`hierarchyPage\`: ordem dos containers na pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
362
- - \`hierarchyMenu\`: ordem das secoes do menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
399
+ - \`hierarchyPage\`: ordem dos containers na página \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
400
+ - \`hierarchyMenu\`: ordem das seções do menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
363
401
 
364
402
  Cada rota pode incluir \`title\`, \`description\` (por idioma), \`titleCss\`, \`titlePosition: "center"\`, \`descriptionPosition: "center"\`, \`titleIsVisible\`, \`descriptionIsVisible\`.
365
403
 
366
- Configuracoes que todas as rotas compartilham ficam uma unica vez em \`routeDefaults\`, no topo do config da versao; cada rota guarda so os proprios valores, e um valor escrito na rota vence o \`routeDefaults\`.
404
+ Configurações que todas as rotas compartilham ficam uma única vez em \`routeDefaults\`, no topo do config da versão; cada rota guarda só os próprios valores, e um valor escrito na rota vence o \`routeDefaults\`.
367
405
 
368
- ## Variaveis por rota (blockLink, container, url, browseAll)
406
+ ## Variáveis por rota (blockLink, container, url, browseAll)
369
407
 
370
- Opcoes por rota em \`routes-md\`, \`routes-html\` e \`routes-video\`:
408
+ Opções por rota em \`routes-md\`, \`routes-html\` e \`routes-video\`:
371
409
 
372
- - **\`blockLink\`** (padrao: true) – Para HTML: se true, links abrem em nova aba (\`target="_blank"\`); se false, no proprio contexto.
373
- - **\`container\`** – \`"full"\` = altura automatica; numero (ex: \`500\`) = altura fixa em px com overflow auto. Aplica-se a md, html e video.
374
- - **\`url\`** – Apenas em \`routes-html\`: \`Record<LanguageCode, string>\` com URLs externas. Quando definido, o iframe usa \`src={url}\` em vez de HTML local via \`srcDoc\`. Rotas com \`url\` nao geram arquivos HTML locais.
375
- - **\`browseAll\`** (padrao: false) – Se true, o container mostra botoes Anterior/Proximo para navegar entre todos os itens daquele tipo.
410
+ - **\`blockLink\`** (padrão: true) – Para HTML: se true, links abrem em nova aba (\`target="_blank"\`); se false, no próprio contexto.
411
+ - **\`container\`** – \`"full"\` = altura automática; numero (ex: \`500\`) = altura fixa em px com overflow auto. Aplica-se a md, html e vídeo.
412
+ - **\`url\`** – Apenas em \`routes-html\`: \`Record<LanguageCode, string>\` com URLs externas. Quando definido, o iframe usa \`src={url}\` em vez de HTML local via \`srcDoc\`. Rotas com \`url\` não geram arquivos HTML locais.
413
+ - **\`browseAll\`** (padrão: false) – Se true, o container mostra botões Anterior/Próximo para navegar entre todos os itens daquele tipo.
376
414
 
377
- ## Tipos de conteudo: path vs url (HTML)
415
+ ## Tipos de conteúdo: path vs url (HTML)
378
416
 
379
417
  - **Markdown (\`routes-md\`)**: usa \`path\` apontando para arquivos \`.md\` locais.
380
- - **HTML (\`routes-html\`)**: usa \`path\` para arquivos HTML locais (sem extensao .html no config) ou \`url\` para URLs externas. Com \`url\`, o iframe carrega a pagina externa; nenhum arquivo local e gerado.
381
- - **Video (\`routes-video\`)**: usa \`video.pathVideo\` e \`video.videoType\` (youtube, vimeo, mp4, etc.).
418
+ - **HTML (\`routes-html\`)**: usa \`path\` para arquivos HTML locais (sem extensão .html no config) ou \`url\` para URLs externas. Com \`url\`, o iframe carrega a página externa; nenhum arquivo local é gerado.
419
+ - **Vídeo (\`routes-video\`)**: usa \`video.pathVideo\` e \`video.videoType\` (youtube, vimeo, mp4, etc.).
382
420
 
383
- ## Variaveis de ambiente
421
+ ## Variáveis de ambiente
384
422
 
385
423
  - \`GITPAGEDOCS_REPOSITORY_SEARCH\`: ativa/desativa busca remota localmente
386
- - \`GITHUB_ACTIONS\`: ativa comportamento especifico de GitHub Pages
424
+ - \`GITHUB_ACTIONS\`: ativa comportamento específico de GitHub Pages
387
425
 
388
426
  ## Comportamento do site e padrões
389
427
 
390
428
  | Chave | Padrão / finalidade |
391
429
  | --- | --- |
392
- | \`ActiveNavigation\` | true; controles comuns de anterior/próximo |
430
+ | \`ActiveNavigation\` | true; navegação rápida e atalho Ctrl+K |
393
431
  | \`FocusMode / focusMode\` | Habilitação geral (true) e controles independentes de cópia, download, seção e documento; consulte Modo foco |
394
432
  | \`pdf\` | Habilitação geral, prévia, download e nova aba; todos true |
395
433
  | \`nestedMenusEnabled\` | true; árvore recursiva, ou destinos em lista plana quando false |
@@ -459,7 +497,7 @@ Em um checkout do runtime com dependências instaladas, \`node cli/index.mjs --h
459
497
 
460
498
  ## Releases npm para mantenedores
461
499
 
462
- O monorepo publica \`@gitpagedocs/tools\`, \`@gitpagedocs/mcp\` e \`@gitpagedocs/cli\`; raiz e frontend são privados. O \`npm-publish.yml\` atual roda em pushes para \`main\` e ignora uma versão da CLI já publicada. Usa o secret \`NPM_TOKEN\` do repositório e publica workspaces na ordem de dependência. Criar somente uma release no GitHub não é seu gatilho.
500
+ O monorepo pública \`@gitpagedocs/tools\`, \`@gitpagedocs/mcp\` e \`@gitpagedocs/cli\`; raiz e frontend são privados. O \`npm-publish.yml\` atual roda em pushes para \`main\` e ignora uma versão da CLI já publicada. Usa o secret \`NPM_TOKEN\` do repositório e pública workspaces na ordem de dependência. Criar somente uma release no GitHub não é seu gatilho.
463
501
 
464
502
  Sincronize versões e dependências internas, regenere docs/baselines, execute typecheck, lint, testes, smoke, build e Playwright e revise antes do push. Confirme as três versões no npm e o resultado do Pages. A CLI de configuração ignora \`prebuilt/\`; essa pasta não é exigida pelo workflow de publicação.
465
503
  `,
@@ -470,34 +508,34 @@ O projeto e organizado por fronteiras de feature e responsabilidades do runtime.
470
508
  ## Pacotes
471
509
 
472
510
  - **frontend/** — visualizador Next.js (Feature-Sliced: app / widgets / features / entities / shared); export estatico.
473
- - **cli/** — o bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de documentacao com IA).
511
+ - **cli/** — o bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de documentação com IA).
474
512
  - **tools/** — \`@gitpagedocs/tools\`: ai/ security/ crypto/ cache/ config/ logger/ errors/ filesystem/ documentation/ i18n/ ports/.
475
513
  - **mcp/** — \`@gitpagedocs/mcp\`: ferramentas + recursos MCP que delegam ao tools/.
476
514
 
477
515
  ## Modulos principais (frontend)
478
516
 
479
- - \`frontend/src/app/[[...repo]]/page.tsx\` — parser de rota, generateStaticParams, selecao de shell.
480
- - \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota, versao, parse markdown, layouts + temas.
481
- - \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/versao/tema, sync de URL, montagem do chat de IA.
517
+ - \`frontend/src/app/[[...repo]]/page.tsx\` — parser de rota, generateStaticParams, seleção de shell.
518
+ - \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota, versão, parse markdown, layouts + temas.
519
+ - \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/versão/tema, sync de URL, montagem do chat de IA.
482
520
 
483
- ## Seguranca: credenciais de IA criptografadas
521
+ ## Segurança: credenciais de IA criptografadas
484
522
 
485
- O console \`/ai\` e o chat drawer exigem uma senha local que deriva (PBKDF2) uma chave AES-256-GCM; as chaves ficam criptografadas no \`localStorage\` e so sao descriptografadas durante a sessao (\`@gitpagedocs/tools/security\`). O drawer se bloqueia sozinho apos \`site.AiChatAutoLockSeconds\` segundos sem uso (padrao 30; \`0\` desativa): um modal centralizado com contagem regressiva, no idioma selecionado, permite cancelar ou bloquear agora, e voltar exige a senha de novo. Na CLI, a chave de \`.gitpagedocsconfig\` fica selada no cofre criptografado \`.gitpagedocsvault\` e a senha do cofre e pedida em toda execucao.
523
+ O console \`/ai\` e o chat drawer exigem uma senha local que deriva (PBKDF2) uma chave AES-256-GCM; as chaves ficam criptografadas no \`localStorage\` e só são descriptografadas durante a sessão (\`@gitpagedocs/tools/security\`). O drawer se bloqueia sozinho após \`site.AiChatAutoLockSeconds\` segundos sem uso (padrão 30; \`0\` desativa): um modal centralizado com contagem regressiva, no idioma selecionado, permite cancelar ou bloquear agora, e voltar exige a senha de novo. Na CLI, a chave de \`.gitpagedocsconfig\` fica selada no cofre criptografado \`.gitpagedocsvault\` e a senha do cofre é pedida em toda execução.
486
524
 
487
525
  ## Fluxo de dados
488
526
 
489
527
  1. A rota chega (\`/owner/repo/v/x.y.z\` ou equivalente local)
490
528
  2. O config e resolvido (local ou remoto)
491
- 3. Config de versao sobrescreve rotas/menus base
529
+ 3. Config de versão sobrescreve rotas/menus base
492
530
  4. Markdown e carregado e convertido para HTML
493
531
  5. Template de layout e resolvido e aplicado em CSS vars
494
- 6. Shell renderiza conteudo e controles
532
+ 6. Shell renderiza conteúdo e controles
495
533
 
496
534
  ## Pontos de resiliencia
497
535
 
498
536
  - fallback de carga para layouts/templates
499
537
  - carregamento de markdown por idioma com fallback de erro
500
- - sincronizacao de linguagem/versao/tema via localStorage
538
+ - sincronização de linguagem/versão/tema via localStorage
501
539
  `,
502
540
  githubIssuesProjects: `# GitHub Issues e Projects
503
541
 
@@ -515,7 +553,7 @@ Conceitos basicos de Git para iniciantes.
515
553
 
516
554
  ## Comandos essenciais
517
555
 
518
- - \`git init\` - iniciar repositorio
556
+ - \`git init\` - iniciar repositório
519
557
  - \`git add\` - preparar alteracoes
520
558
  - \`git commit\` - registrar commit
521
559
  - \`git push\` - enviar para remoto
@@ -524,21 +562,21 @@ Conceitos basicos de Git para iniciantes.
524
562
 
525
563
  Proteja rotas por chave de acesso, papeis obrigatorios e provedores externos.
526
564
 
527
- ## Local do config de versao
565
+ ## Local do config de versão
528
566
 
529
567
  Configure em:
530
568
 
531
569
  - \`gitpagedocs/docs/versions/<versao>/config.json\`
532
570
 
533
- ## Secao global auth
571
+ ## Seção global auth
534
572
 
535
- Use \`auth\` no topo do config de versao:
573
+ Use \`auth\` no topo do config de versão:
536
574
 
537
575
  - \`accessKeys\`: mapa de ids de chave para segredo esperado
538
576
  - \`rolesStorageKey\`: chave de localStorage para bootstrap de papeis
539
577
  - \`providers\`: lista de provedores externos (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
540
578
 
541
- ## Autorizacao por rota
579
+ ## Autorização por rota
542
580
 
543
581
  Dentro de cada rota (\`routes-md\`, \`routes-html\`, \`routes-video\`):
544
582
 
@@ -576,7 +614,7 @@ Adaptadores suportados:
576
614
  `,
577
615
  themes: `# Temas e layouts
578
616
 
579
- Temas sao templates JSON mapeados por \`layoutsConfig.json\`.
617
+ Temas são templates JSON mapeados por \`layoutsConfig.json\`.
580
618
 
581
619
  ## Arquivos
582
620
 
@@ -597,15 +635,15 @@ Cada template normalmente contem:
597
635
 
598
636
  ## Comportamento em runtime
599
637
 
600
- - tema ativo vem de config/usuario
601
- - toggle light/dark resolve o tema pareado por referencia
602
- - variaveis CSS sao geradas dos tokens do template
638
+ - tema ativo vem de config/usuário
639
+ - toggle light/dark resolve o tema pareado por referência
640
+ - variáveis CSS são geradas dos tokens do template
603
641
 
604
642
  ## Boas praticas
605
643
 
606
644
  - mantenha contraste acessivel
607
645
  - padronize escala de espaco e borda
608
- - ofereca variantes dark e light quando possivel
646
+ - ofereca variantes dark e light quando possível
609
647
 
610
648
  ## Escolher e personalizar
611
649
 
@@ -740,47 +778,47 @@ A etapa de geração envia o conteúdo selecionado do projeto ao provedor config
740
778
 
741
779
  ## Comandos da CLI
742
780
 
743
- | Comando | Descricao |
781
+ | Comando | Descrição |
744
782
  |---------|------------|
745
783
  | \`npx @gitpagedocs/cli\` | Gera config e docs em \`gitpagedocs/\` |
746
- | \`npx @gitpagedocs/cli --layoutconfig\` | Tambem gera layouts/templates locais em \`gitpagelayouts/\` |
784
+ | \`npx @gitpagedocs/cli --layoutconfig\` | Também gera layouts/templates locais em \`gitpagelayouts/\` |
747
785
  | \`npx @gitpagedocs/cli --home\` | Distribuicao standalone (\`gitpagedocshome/\`) |
748
786
  | \`npx @gitpagedocs/cli --push --owner X --repo Y\` | Configura workflow, commit, push |
749
- | \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interativo com prompts (padrao em um terminal) |
750
- | \`npx @gitpagedocs/cli --no-interactive\` / \`--yes\` / \`-y\` | Nunca pergunta; usa flags e padroes |
751
- | \`gitpagedocs ai\` | Gerador interativo de documentacao com IA |
752
- | \`gitpagedocs chat [pergunta]\` | Chat de IA com streaming no terminal (REPL em TTY; resposta unica com pergunta ou stdin) |
753
- | \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista provedores de IA / modelos do catalogo |
754
- | \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Gera documentacao com IA |
787
+ | \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interativo com prompts (padrão em um terminal) |
788
+ | \`npx @gitpagedocs/cli --no-interactive\` / \`--yes\` / \`-y\` | Nunca pergunta; usa flags e padrões |
789
+ | \`gitpagedocs ai\` | Gerador interativo de documentação com IA |
790
+ | \`gitpagedocs chat [pergunta]\` | Chat de IA com streaming no terminal (REPL em TTY; resposta única com pergunta ou stdin) |
791
+ | \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista provedores de IA / modelos do catálogo |
792
+ | \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Gera documentação com IA |
755
793
  | \`gitpagedocs deploy\` / \`pages [actions\\|deploy]\` | Configura GitHub Pages via Actions + push |
756
794
  | \`gitpagedocs docs\` | Atualiza as regioes gerenciadas de README/CONTRIBUTING/SECURITY |
757
- | \`gitpagedocs password\` | Define a senha de acesso a documentacao (chave publica em \`site.docsAccess\`) |
795
+ | \`gitpagedocs password\` | Define a senha de acesso a documentação (chave pública em \`site.docsAccess\`) |
758
796
  | \`gitpagedocs config\` / \`config clear\` | Mostra a config resolvida / apaga a config salva e o cofre de chaves |
759
- | \`gitpagedocs doctor\` / \`version\` / \`update\` | Diagnostico / versao / verificacao de atualizacao no registro |
797
+ | \`gitpagedocs doctor\` / \`version\` / \`update\` | Diagnóstico / versão / verificação de atualização no registro |
760
798
  | \`gitpagedocs mcp start\` | Inicia o servidor MCP via stdio |
761
799
 
762
800
  Instale globalmente com \`npm install -g @gitpagedocs/cli\` ou rode sem instalar com \`npx @gitpagedocs/cli\`.
763
801
 
764
- ## Opcoes da CLI
802
+ ## Opções da CLI
765
803
 
766
- | Opcao | Descricao |
804
+ | Opção | Descrição |
767
805
  |-------|-----------|
768
806
  | \`--owner <user>\` | Owner do GitHub |
769
- | \`--repo <repo>\` | Repositorio GitHub |
807
+ | \`--repo <repo>\` | Repositório GitHub |
770
808
  | \`--path <subpath>\` | Subcaminho dos docs (ex: \`docs\`); sem ele, base path = nome do repo para CSS/JS em project sites |
771
- | \`--output <dir>\` | Diretorio de saida (padrao: \`gitpagedocs\`) |
772
- | \`--search <true-or-false>\` | Habilita/desabilita busca de repositorio (\`--home\`) |
809
+ | \`--output <dir>\` | Diretório de saída (padrão: \`gitpagedocs\`) |
810
+ | \`--search <true-or-false>\` | Habilita/desabilita busca de repositório (\`--home\`) |
773
811
  | \`--layoutconfig\` | Gera layouts locais em \`gitpagelayouts/\` |
774
- | \`--layouts-dir <dir>\` | Pasta dos layouts locais (padrao: \`gitpagelayouts\`) |
812
+ | \`--layouts-dir <dir>\` | Pasta dos layouts locais (padrão: \`gitpagelayouts\`) |
775
813
  | \`--push\` | Cria workflow, commit de artefatos, push |
776
814
  | \`--pages-actions\` | Apenas muda a fonte do GitHub Pages para GitHub Actions (igual a \`pages actions\`) |
777
815
  | \`--home\` | Gera \`gitpagedocshome/\` (estatico + .env + Dockerfile) |
778
816
 
779
- ## Saida gerada
817
+ ## Saída gerada
780
818
 
781
819
  - \`gitpagedocs/config.json\` – config raiz
782
- - \`gitpagedocs/icon.svg\` – icone padrao
783
- - \`gitpagedocs/docs/versions/<ver>/config.json\` – rotas por versao
820
+ - \`gitpagedocs/icon.svg\` – ícone padrão
821
+ - \`gitpagedocs/docs/versions/<ver>/config.json\` – rotas por versão
784
822
  - \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs em markdown
785
823
  - \`gitpagelayouts/\` – apenas com \`--layoutconfig\` (pasta configuravel com \`--layouts-dir\`)
786
824
 
@@ -825,7 +863,7 @@ Rotas definem o conteúdo; menus definem como o leitor o encontra. Configure-os
825
863
 
826
864
  Cada entrada de \`menus-header-md\` tem \`id\` e objetos \`pt\`, \`en\`, \`es\` com \`title\` e \`path-click\` opcional. Adicione \`submenus\` com novas entradas para aninhar a árvore. O objeto de um idioma também aceita \`submenus\` localizados com título/caminho. Use uma forma de maneira consistente para não listar o mesmo filho duas vezes.
827
865
 
828
- Grupos sem \`path-click\` organizam os filhos. Para um destino Markdown, use seu caminho localizado real de \`routes-md[].path\`. O alias \`page:<id>\` é registrado por rotas source-viewer, vídeo, áudio e PDF; não o use em uma página somente Markdown. O exemplo usa a versão \`0.0.8\`: troque esse trecho pela versão editada e crie os três arquivos chapter.
866
+ Grupos sem \`path-click\` organizam os filhos. Para o destino de uma rota Markdown, use seu caminho localizado real de \`routes-md[].path\`. Rotas source-viewer, vídeo, áudio, PDF e composições explícitas em \`pages\` registram \`page:<id>\`; uma rota Markdown simples usa o caminho do arquivo. O exemplo usa a versão \`0.0.8\`: troque esse trecho pela versão editada e crie os três arquivos chapter.
829
867
 
830
868
  \`\`\`json
831
869
  {
@@ -893,6 +931,14 @@ Grupos sem \`path-click\` organizam os filhos. Para um destino Markdown, use seu
893
931
 
894
932
  ## Comportamento do aninhamento
895
933
 
934
+ Um pai pode ser documento e grupo ao mesmo tempo. Mantenha seu \`path-click\` localizado junto com \`submenus\`: o título abre a página Markdown e a seta separada expande ou recolhe os filhos. O scaffold inclui visões gerais úteis para os oito grupos pais. Os ancestrais dos breadcrumbs apontam para esses documentos; o destino atual continua marcado como atual. Um grupo sem caminho ainda organiza filhos, mas não possui destino para abrir.
935
+
936
+ O trecho abaixo usa as rotas Markdown 31, 32 e 13 já presentes no scaffold. Combine-o com \`menus-header-md\` e preserve as definições correspondentes em \`routes-md\` e seus arquivos:
937
+
938
+ \`\`\`json
939
+ ${PARENT_MENU_JSON}
940
+ \`\`\`
941
+
896
942
  \`site.nestedMenusEnabled: true\` exibe menus recursivos expansíveis. Você pode acrescentar \`submenus\` em qualquer nó: não há limite fixo de profundidade na aplicação. A configuração deve ser finita e adequada à memória do navegador e à usabilidade. Com \`false\`, os destinos aparecem em uma lista plana; as páginas aninhadas não são removidas.
897
943
 
898
944
  A árvore atende à navegação lateral, aos rótulos de busca, à expansão dos pais e à trilha de navegação. Mantenha IDs estáveis e sem ambiguidade; destinos protegidos seguem as regras de autorização da página. A mesma estrutura vale para \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\` e \`menus-header-pdf\`. \`hierarchyMenu\` ordena as seções por tipo; \`hierarchyPage\` ordena os containers que compartilham o ID da página.
@@ -905,7 +951,9 @@ A árvore atende à navegação lateral, aos rótulos de busca, à expansão dos
905
951
 
906
952
  ## URLs e anterior/próximo
907
953
 
908
- URLs versionadas usam \`/v/<version>/\`; \`?lang=pt\` escolhe o idioma e \`?id=101\` escolhe a página. \`?name=chapter\` seleciona o slug do documento. Mantenha \`VersionControl.versions[].path\` apontando para o config da versão correspondente. \`site.ActiveNavigation\` ativa anterior/próximo comum; a navegação entre documentos no modo foco possui opção própria. Consulte Modo foco para os controles de seção e documento.
954
+ URLs versionadas usam \`/v/<version>/\`; \`?lang=pt\` escolhe o idioma e \`?id=101\` escolhe a página. \`?name=chapter\` seleciona o slug do documento. Mantenha \`VersionControl.versions[].path\` apontando para o config da versão correspondente. \`site.ActiveNavigation\` ativa a navegação rápida e seu atalho Ctrl+K. Os controles anterior/próximo do rodapé seguem os destinos disponíveis no menu; a navegação entre documentos no modo foco possui opção própria. Consulte Modo foco para os controles de seção e documento.
955
+
956
+ Os botões Voltar/Próximo do rodapé usam \`site.icons.DocumentPrevious\` (\`LuChevronLeft\`) e \`site.icons.DocumentNext\` (\`LuChevronRight\`) por padrão. Defina \`reactIcon: false\` em qualquer entrada para exibir seu texto traduzido; cada entrada também aceita \`tag\`, \`size\`, \`colorDark\` e \`colorLight\`. A aparência não muda a navegação: o rodapé aparece quando há mais de um destino disponível no menu, e a direção indisponível continua desabilitada nas extremidades.
909
957
 
910
958
  Teste um menu novo pela lateral, por URL direta e em cada idioma habilitado; confirme que o destino existe e é permitido para o leitor atual.
911
959
  `,
@@ -931,18 +979,21 @@ Mescle este fragmento em \`gitpagedocs/config.json\`:
931
979
  }
932
980
  \`\`\`
933
981
 
934
- Cada opção tem padrão \`true\`; \`false\` oculta seu controle correspondente. Com \`sectionNavigationEnabled: false\`, o modo foco exibe o documento inteiro sem paginação por seções. Configurações existentes sem o novo objeto \`focusMode\` mantêm os controles habilitados.
982
+ Cada opção tem padrão \`true\`; \`false\` oculta a ação ou o grupo de navegação correspondente. Com \`sectionNavigationEnabled: false\`, o modo foco exibe o documento inteiro sem paginação por seções. Configurações existentes sem o novo objeto \`focusMode\` mantêm os controles habilitados.
935
983
 
936
984
  ## Seções e documentos
937
985
 
938
- - Os controles anterior/próximo de seta simples mudam de seção no mesmo documento.
939
- - Os controles anterior/próximo de seta dupla mudam de documento Markdown na ordem dos menus, incluindo submenus.
986
+ - A navegação de seções possui quatro botões: primeira seção, seção anterior, próxima seção e última seção do documento atual.
987
+ - A navegação de documentos possui quatro botões: primeiro documento, documento anterior, próximo documento e último documento na ordem dos menus, incluindo submenus.
988
+ - \`sectionNavigationEnabled\` controla os quatro botões de seção; \`documentNavigationEnabled\` controla os quatro botões de documento. Direções indisponíveis ficam desabilitadas nas extremidades.
940
989
  - Documentos sem tradução no idioma ativo, destinos sem Markdown e páginas sem permissão são ignorados.
941
990
  - Trocar de documento mantém o diálogo aberto e volta à primeira seção. Contadores de seção/documento mostram a posição atual.
942
- - \`site.ActiveNavigation\` controla a navegação comum da página; não desabilita a navegação de documentos no modo foco.
991
+ - \`site.ActiveNavigation\` controla a navegação rápida; não desabilita a navegação de documentos no modo foco.
943
992
 
944
993
  ## Copiar e baixar
945
994
 
995
+ Em uma página composta, o foco lê os blocos Markdown autorizados em ordem, incluindo repetições. Copiar/baixar reúne essas fontes e usa \`page-<id>.md\`; as ações individuais dos blocos mantêm os nomes originais. Consulte Blocos de conteúdo ordenados para o contrato completo.
996
+
946
997
  Copiar e baixar usam o **Markdown original inteiro no idioma selecionado**, incluindo seções que não estão visíveis no momento. Não exportam o HTML renderizado nem apenas a seção atual.
947
998
 
948
999
  O download conserva o nome-base Markdown do \`path\` localizado da rota; quando indisponível, o nome do arquivo é \`document.md\`. A área de transferência segue as permissões e regras de contexto seguro do navegador. Se a cópia falhar, use o download e confira o erro exibido.
@@ -1014,37 +1065,37 @@ Consulte a [referência da Web Speech API](https://developer.mozilla.org/en-US/d
1014
1065
  `,
1015
1066
  faq: `# FAQ
1016
1067
 
1017
- ## Por que repositorios remotos nao abrem localmente?
1068
+ ## Por que repositórios remotos não abrem localmente?
1018
1069
 
1019
1070
  Verifique:
1020
1071
 
1021
1072
  - \`GITPAGEDOCS_REPOSITORY_SEARCH=true\` no \`.env\`
1022
- - repositorio alvo contem \`gitpagedocs/config.json\`
1023
- - paths markdown do repositorio batem com seu config de rotas
1073
+ - repositório alvo contem \`gitpagedocs/config.json\`
1074
+ - paths markdown do repositório batem com seu config de rotas
1024
1075
 
1025
- ## Por que rota de versao mostra conteudo errado?
1076
+ ## Por que rota de versão mostra conteúdo errado?
1026
1077
 
1027
1078
  Verifique:
1028
1079
 
1029
1080
  - \`VersionControl.versions[*].path\` em \`gitpagedocs/config.json\`
1030
- - config da versao possui \`routes\` e \`menus-header\` validos
1081
+ - config da versão possui \`routes\` e \`menus-header\` válidos
1031
1082
  - markdown existe para cada idioma
1032
1083
 
1033
- ## Por que tema nao aplica corretamente?
1084
+ ## Por que tema não aplica corretamente?
1034
1085
 
1035
1086
  Verifique:
1036
1087
 
1037
- - \`layoutsConfig.json\` referencia templates validos
1038
- - ids de template sao unicos
1088
+ - \`layoutsConfig.json\` referência templates válidos
1089
+ - ids de template são únicos
1039
1090
  - tema selecionado existe no mapa de temas carregados
1040
1091
 
1041
1092
  ## Por que GitHub Pages pode se comportar diferente do local?
1042
1093
 
1043
- Porque o build de GitHub Pages habilita pagina inicial de busca e comportamento especifico de exportacao.
1094
+ Porque o build de GitHub Pages habilita página inicial de busca e comportamento específico de exportação.
1044
1095
 
1045
1096
  ## Por que o ícone ainda mostra texto?
1046
1097
 
1047
- Defina \`site.icons.<Controle>.reactIcon\` como booleano \`true\`, com o nome exato exportado por React Icons em \`tag\`. Os controles incluem LanguageSelector, ThemeSelector, FocusMode e QuickNavigation. Campos planos \`Icon*ReactIcones\` prevalecem se os dois formatos existirem. Confira se o próprio recurso está desabilitado por opções como \`HideThemeSelector\` ou \`FocusMode\`.
1098
+ Defina \`site.icons.<Controle>.reactIcon\` como booleano \`true\`, com o nome exato exportado por React Icons em \`tag\`. LanguageSelector, ThemeSelector, FocusMode, QuickNavigation, PdfDownload, PdfOpenInNewTab, DocumentPrevious e DocumentNext usam ícones por padrão; altere qualquer entrada para \`false\` para exibir texto. Campos planos \`Icon*ReactIcones\` prevalecem se os dois formatos existirem. Confira se o próprio recurso está desabilitado por opções como \`HideThemeSelector\`, \`FocusMode\` ou as ações PDF.
1048
1099
 
1049
1100
  ## Por que filhos de menus ou breadcrumbs aparecem diferentes?
1050
1101