@gitpagedocs/cli 0.0.8 → 0.0.10

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,89 @@
1
+ import { practicalPt } from "./practical-pt.mjs";
2
+ import { operationsPt } from "./operations-pt.mjs";
3
+
1
4
  export const docsPt = {
5
+ ...practicalPt,
6
+ ...operationsPt,
7
+ pdf: `# Documentos PDF
8
+
9
+ 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.
10
+
11
+ ## Guia do projeto em inglês
12
+
13
+ O scaffold inclui o [Guia do projeto GitPageDocs (PDF, inglês)](https://github.com/Vidigal-code/git-page-docs/blob/main/cli/content/assets/gitpagedocs-project-guide.pdf). Ele explica o projeto, pacotes, configuração, ícones, modo foco, narração, CLI, MCP e publicação. O PDF está em inglês; esta referência possui versões em português, inglês e espanhol.
14
+
15
+ A CLI copia os bytes do anexo para \`gitpagedocs/docs/versions/<versão>/en/gitpagedocs-project-guide.pdf\`. Os três caminhos de idioma do exemplo apontam para esse arquivo em inglês. Para oferecer traduções, adicione os PDFs traduzidos e altere o caminho de cada idioma.
16
+
17
+ ## Padrões do site
18
+
19
+ Adicione este bloco dentro de \`site\` em \`gitpagedocs/config.json\`:
20
+
21
+ \`\`\`json
22
+ {
23
+ "pdf": {
24
+ "enabled": true,
25
+ "previewEnabled": true,
26
+ "downloadEnabled": true,
27
+ "openInNewTabEnabled": true
28
+ }
29
+ }
30
+ \`\`\`
31
+
32
+ \`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.
33
+
34
+ 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.
35
+
36
+ As ações PDF usam ícones por padrão. Configure \`site.icons.PdfDownload\` (\`FiDownload\`) e \`site.icons.PdfOpenInNewTab\` (\`FiExternalLink\`) 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.
37
+
38
+ ## Exemplo de rota e menu
39
+
40
+ Em \`gitpagedocs/docs/versions/0.0.10/config.json\`, mantenha as listas de rotas e menus no nível principal:
41
+
42
+ \`\`\`json
43
+ {
44
+ "routes-pdf": [{
45
+ "id": 23,
46
+ "title": { "en": "Project guide (English)", "pt": "Guia do projeto (inglês)", "es": "Guía del proyecto (inglés)" },
47
+ "pdf": {
48
+ "pathPdf": {
49
+ "en": "gitpagedocs/docs/versions/0.0.10/en/gitpagedocs-project-guide.pdf",
50
+ "pt": "gitpagedocs/docs/versions/0.0.10/en/gitpagedocs-project-guide.pdf",
51
+ "es": "gitpagedocs/docs/versions/0.0.10/en/gitpagedocs-project-guide.pdf"
52
+ },
53
+ "previewEnabled": true,
54
+ "downloadEnabled": true,
55
+ "openInNewTabEnabled": true
56
+ }
57
+ }],
58
+ "menus-header-pdf": [{
59
+ "id": 23,
60
+ "en": { "title": "Project guide (English)", "path-click": "page:23" },
61
+ "pt": { "title": "Guia do projeto (inglês)", "path-click": "page:23" },
62
+ "es": { "title": "Guía del proyecto (inglés)", "path-click": "page:23" }
63
+ }]
64
+ }
65
+ \`\`\`
66
+
67
+ O mapa \`pdf.pathPdf\` seleciona o arquivo do idioma atual. Use \`page:<id>\` nos destinos dos menus PDF. A mesma estrutura recursiva de \`submenus\` dos outros menus está disponível. O scaffold reserva o ID 23 para o exemplo PDF e o ID 24 para esta referência Markdown; use IDs únicos para páginas adicionais.
68
+
69
+ As flags opcionais da rota ficam dentro de \`pdf\`. Apresentação compartilhada, \`container\`, \`RouteGuide\` e autorização continuam no nível da rota. \`routeDefaults\` também atende rotas PDF. Adicione \`"pdf": 5\` em \`hierarchyPage\` e \`hierarchyMenu\` para posicionar PDFs depois do áudio; ajuste os valores conforme a ordem desejada.
70
+
71
+ ## Arquivos e publicação
72
+
73
+ 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).
74
+
75
+ 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.
76
+
77
+ 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.
78
+
79
+ ## Leitura e diagnóstico
80
+
81
+ - Os controles nativos de PDF, teclado, zoom e navegação entre páginas dependem do navegador. Alguns navegadores móveis abrem ou baixam o arquivo em vez de incorporá-lo.
82
+ - 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.
83
+ - Desabilitar a prévia pode manter download e nova aba disponíveis. Desabilitar todas as ações deixa o PDF sem controle interativo.
84
+ - Ocultar um botão não controla acesso. PDFs hospedados publicamente continuam acessíveis pela URL. Documentos confidenciais precisam de hospedagem protegida.
85
+ - 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.
86
+ `,
2
87
  index: `# Git Page Docs
3
88
 
4
89
  Git Page Docs e um runtime de documentacao multi-idioma para repositorios que possuem a pasta \`gitpagedocs/\`.
@@ -31,45 +116,70 @@ O runtime espera esta estrutura:
31
116
  - Abra **Temas e layouts** para autoria de templates.
32
117
  - Abra **Rotas autorizadas** para configurar chave, papeis e autenticacao externa.
33
118
  - Abra **FAQ** para troubleshooting.
119
+
120
+ ## Referências detalhadas
121
+
122
+ - **Referência da CLI**: instalação, todos os comandos e flags de compatibilidade.
123
+ - **Servidor MCP**: cliente, 20 tools, 7 resources e configuração de provedores.
124
+ - **Navegação e submenus**: árvores recursivas, URLs e sobrescritas dos breadcrumbs.
125
+ - **Modo foco**: copiar/baixar Markdown e navegar por seção/documento.
126
+ - **Acessibilidade e narração**: vozes do navegador, controles e interação com mídias.
127
+ - **Documentos PDF**: prévia nativa, download/nova aba e o guia incluído em inglês.
128
+ - **Receitas de configuração**: um site multilíngue completo e um menu com seções dentro de seções.
129
+ - **Migração e compatibilidade**: atualizar configurações desde a versão 0.0.1 preservando seu conteúdo.
130
+ - **Solução de problemas**: UTF-8, caminhos locais e do Pages, carregamento de PDF, vozes e inicialização do MCP.
131
+ - **Contribuição e validação**: arquivos fonte, geração, contratos públicos e verificações de publicação.
132
+ - **Containers HTML**: páginas locais e externas, configuração de rotas/menus e o exemplo interativo DOOM.
133
+
134
+ 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.
34
135
  `,
35
136
  gettingStarted: `# Primeiros passos
36
137
 
37
- Este guia leva o projeto do zero ate docs rodando.
138
+ O Git Page Docs separa os arquivos de documentação do visualizador. Instale a CLI para criar os arquivos; use o visualizador oficial, GitHub Pages ou um checkout do runtime para exibi-los.
139
+
140
+ ## Requisitos e instalação
141
+
142
+ Use Node.js 20 ou superior. Git é necessário para publicar; GitHub CLI é necessário quando a CLI configura o Pages automaticamente.
38
143
 
39
- ## Pre-requisitos
144
+ \`\`\`bash
145
+ npm install --save-dev @gitpagedocs/cli
146
+ npx gitpagedocs --no-interactive --owner SEU_USUARIO --repo SEU_REPOSITORIO
147
+ \`\`\`
40
148
 
41
- - Node.js 20+
42
- - npm 10+ (ou pnpm)
149
+ Para executar sem instalação local, use \`npx --yes @gitpagedocs/cli --no-interactive --owner SEU_USUARIO --repo SEU_REPOSITORIO\`. Para instalar globalmente, use \`npm install -g @gitpagedocs/cli\` e depois \`gitpagedocs\`. Execute na raiz do repositório.
43
150
 
44
- ## Setup local
151
+ ## Contrato gerado
45
152
 
46
- 1. Instale dependencias:
47
- - \`npm install\`
48
- 2. Gere/atualize os artefatos de docs:
49
- - \`npm run gitpagedocs\`
50
- 3. Inicie o desenvolvimento:
51
- - \`npm run dev\`
52
- 4. Build e execucao local de producao:
53
- - \`npm run build\`
54
- - \`npm start\`
153
+ - \`gitpagedocs/config.json\`: opções do site e referências das versões.
154
+ - \`gitpagedocs/langs/{en,pt,es}.json\`: textos da interface.
155
+ - \`gitpagedocs/docs/versions/<version>/config.json\`: rotas e menus.
156
+ - \`gitpagedocs/docs/versions/<version>/{en,pt,es}/*.md\`: conteúdo; os nomes dos arquivos permanecem em inglês nos três idiomas.
157
+ - \`gitpagedocs/icon.svg\`: ícone do site.
158
+ - \`--layoutconfig\` também grava \`gitpagelayouts/\`; \`--layouts-dir\` altera essa pasta.
55
159
 
56
- ## Comportamento da CLI
160
+ O gerador escreve configuração e conteúdo; ele não instala uma aplicação Next.js no seu repositório. Executá-lo novamente regrava os arquivos do scaffold: revise o diff do Git antes de manter mudanças em documentação editada manualmente.
57
161
 
58
- \`npx @gitpagedocs/cli\` (ou \`npm run gitpagedocs\`) gera os artefatos na pasta oficial \`gitpagedocs/\`.
162
+ ## Ler e publicar
59
163
 
60
- - Gera somente markdown/json
61
- - Nao gera \`index.html\`
62
- - Nao gera \`index.js\`
63
- - Nao executa comandos de instalacao
164
+ Faça commit e push da pasta gerada e abra \`https://vidigal-code.github.io/git-page-docs/SEU_USUARIO/SEU_REPOSITORIO/\` para um repositório público. Para publicar seu próprio site, autentique com \`gh auth login\` e execute \`npx gitpagedocs pages deploy --owner SEU_USUARIO --repo SEU_REPOSITORIO\`. Isso gera arquivos, faz commit e push; acompanhe a execução do GitHub Actions. Consulte Publicação para subcaminhos e o contrato do workflow.
64
165
 
65
- ## Modo de busca por repositorio
166
+ ## Desenvolver o visualizador localmente
66
167
 
67
- No ambiente local, o controle e por variavel:
168
+ Os comandos abaixo pertencem a um checkout do Git Page Docs, não a um repositório que contém apenas arquivos gerados:
68
169
 
69
- - \`GITPAGEDOCS_REPOSITORY_SEARCH=true\`
70
- - \`GITPAGEDOCS_REPOSITORY_SEARCH=false\`
170
+ \`\`\`bash
171
+ git clone https://github.com/Vidigal-code/git-page-docs.git
172
+ cd git-page-docs
173
+ corepack enable
174
+ pnpm install --frozen-lockfile
175
+ pnpm dev
176
+ \`\`\`
71
177
 
72
- Em build de GitHub Pages (\`GITHUB_ACTIONS=true\`), a busca de repositorio fica sempre ativa.
178
+ O repositório fixa o pnpm em \`packageManager\`. \`pnpm dev\` ativa a busca de repositórios; \`pnpm dev:e2e\` usa a documentação local. Para produção local, execute \`pnpm build\` e \`pnpm start\`; o script start recompila antes de iniciar. Configure \`PORT=3100\` no ambiente do processo quando a porta 3000 estiver ocupada.
179
+
180
+ ## Próximos passos
181
+
182
+ 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.
73
183
  `,
74
184
  projectOverview: `# Visao geral do projeto
75
185
 
@@ -101,51 +211,9 @@ Git Page Docs e um monorepo pnpm + turborepo que transforma a pasta \`gitpagedoc
101
211
 
102
212
  Referencia completa de opcoes da CLI, chaves de configuracao e recursos do runtime.
103
213
 
104
- ## Comandos da CLI
105
-
106
- | Comando | Descricao |
107
- |---------|------------|
108
- | \`npx @gitpagedocs/cli\` | Gera config e docs em \`gitpagedocs/\` |
109
- | \`npx @gitpagedocs/cli --layoutconfig\` | Tambem gera layouts/templates locais em \`gitpagelayouts/\` |
110
- | \`npx @gitpagedocs/cli --home\` | Distribuicao standalone (\`gitpagedocshome/\`) |
111
- | \`npx @gitpagedocs/cli --push --owner X --repo Y\` | Configura workflow, commit, push |
112
- | \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interativo com prompts (padrao em um terminal) |
113
- | \`npx @gitpagedocs/cli --no-interactive\` / \`--yes\` / \`-y\` | Nunca pergunta; usa flags e padroes |
114
- | \`gitpagedocs ai\` | Gerador interativo de documentacao com IA |
115
- | \`gitpagedocs chat [pergunta]\` | Chat de IA com streaming no terminal (REPL em TTY; resposta unica com pergunta ou stdin) |
116
- | \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista provedores de IA / modelos do catalogo |
117
- | \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Gera documentacao com IA |
118
- | \`gitpagedocs deploy\` / \`pages [actions\\|deploy]\` | Configura GitHub Pages via Actions + push |
119
- | \`gitpagedocs docs\` | Atualiza as regioes gerenciadas de README/CONTRIBUTING/SECURITY |
120
- | \`gitpagedocs password\` | Define a senha de acesso a documentacao (chave publica em \`site.docsAccess\`) |
121
- | \`gitpagedocs config\` / \`config clear\` | Mostra a config resolvida / apaga a config salva e o cofre de chaves |
122
- | \`gitpagedocs doctor\` / \`version\` / \`update\` | Diagnostico / versao / verificacao de atualizacao no registro |
123
- | \`gitpagedocs mcp start\` | Inicia o servidor MCP via stdio |
124
-
125
- Instale globalmente com \`npm install -g @gitpagedocs/cli\` ou rode sem instalar com \`npx @gitpagedocs/cli\`.
214
+ ## Linha de comando
126
215
 
127
- ## Opcoes da CLI
128
-
129
- | Opcao | Descricao |
130
- |-------|-----------|
131
- | \`--owner <user>\` | Owner do GitHub |
132
- | \`--repo <repo>\` | Repositorio GitHub |
133
- | \`--path <subpath>\` | Subcaminho dos docs (ex: \`docs\`); sem ele, base path = nome do repo para CSS/JS em project sites |
134
- | \`--output <dir>\` | Diretorio de saida (padrao: \`gitpagedocs\`) |
135
- | \`--search true|false\` | Habilita/desabilita busca de repositorio (\`--home\`) |
136
- | \`--layoutconfig\` | Gera layouts locais em \`gitpagelayouts/\` |
137
- | \`--layouts-dir <dir>\` | Pasta dos layouts locais (padrao: \`gitpagelayouts\`) |
138
- | \`--push\` | Cria workflow, commit de artefatos, push |
139
- | \`--pages-actions\` | Apenas muda a fonte do GitHub Pages para GitHub Actions (igual a \`pages actions\`) |
140
- | \`--home\` | Gera \`gitpagedocshome/\` (estatico + .env + Dockerfile) |
141
-
142
- ## Saida gerada
143
-
144
- - \`gitpagedocs/config.json\` – config raiz
145
- - \`gitpagedocs/icon.svg\` – icone padrao
146
- - \`gitpagedocs/docs/versions/<ver>/config.json\` – rotas por versao
147
- - \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs em markdown
148
- - \`gitpagelayouts/\` – apenas com \`--layoutconfig\` (pasta configuravel com \`--layouts-dir\`)
216
+ Consulte **Referência da CLI** para comandos, flags, exemplos e compatibilidade. Consulte **Servidor MCP** para integração com editores.
149
217
 
150
218
  ## Tipos de conteudo
151
219
 
@@ -155,6 +223,7 @@ Instale globalmente com \`npm install -g @gitpagedocs/cli\` ou rode sem instalar
155
223
  | HTML | \`routes-html\` | \`path\` local ou \`url\` externa |
156
224
  | Video | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
157
225
  | Audio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
226
+ | PDF | \`routes-pdf\` | \`pdf.pathPdf\` por idioma; prévia nativa e download |
158
227
 
159
228
  ## Visualizador de codigo fonte
160
229
 
@@ -222,7 +291,7 @@ Principais chaves:
222
291
  - \`ThemeModeDefault\`: modo inicial (\`light\` ou \`dark\`)
223
292
  - \`ProjectLink\`: URL de repositorio para acoes no cabecalho
224
293
  - \`docsVersion\`: versao inicial selecionada
225
- - \`ActiveNavigation\`: habilita comportamento de anterior/proximo
294
+ - \`ActiveNavigation\`: habilita a navegação rápida e o atalho Ctrl+K
226
295
  - \`FocusMode\`: habilita modo foco/leitura
227
296
  - \`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.
228
297
  - \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamanho do icone principal
@@ -238,6 +307,55 @@ Principais chaves:
238
307
  - \`layoutsConfigPath\`: fallback remoto para layouts
239
308
  - \`rendering\`: URL canonica publicada
240
309
 
310
+ ## Controles de idioma, tema, foco, navegação rápida, PDF e documentos
311
+
312
+ 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:
313
+
314
+ \`\`\`json
315
+ {
316
+ "site": {
317
+ "icons": {
318
+ "LanguageSelector": {
319
+ "reactIcon": true, "tag": "FiGlobe", "size": "22px",
320
+ "colorDark": "currentColor", "colorLight": "currentColor"
321
+ },
322
+ "ThemeSelector": {
323
+ "reactIcon": true, "tag": "BsSunFill", "size": "22px",
324
+ "colorDark": "currentColor", "colorLight": "currentColor"
325
+ },
326
+ "FocusMode": {
327
+ "reactIcon": true, "tag": "MdFullscreen", "size": "22px",
328
+ "colorDark": "currentColor", "colorLight": "currentColor"
329
+ },
330
+ "QuickNavigation": {
331
+ "reactIcon": true, "tag": "FiSearch", "size": "22px",
332
+ "colorDark": "currentColor", "colorLight": "currentColor"
333
+ },
334
+ "PdfDownload": {
335
+ "reactIcon": true, "tag": "FiDownload", "size": "22px",
336
+ "colorDark": "currentColor", "colorLight": "currentColor"
337
+ },
338
+ "PdfOpenInNewTab": {
339
+ "reactIcon": true, "tag": "FiExternalLink", "size": "22px",
340
+ "colorDark": "currentColor", "colorLight": "currentColor"
341
+ },
342
+ "DocumentPrevious": {
343
+ "reactIcon": true, "tag": "FiChevronLeft", "size": "22px",
344
+ "colorDark": "currentColor", "colorLight": "currentColor"
345
+ },
346
+ "DocumentNext": {
347
+ "reactIcon": true, "tag": "FiChevronRight", "size": "22px",
348
+ "colorDark": "currentColor", "colorLight": "currentColor"
349
+ }
350
+ }
351
+ }
352
+ }
353
+ \`\`\`
354
+
355
+ 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.
356
+
357
+ 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.
358
+
241
359
  ## Secao \`VersionControl\`
242
360
 
243
361
  \`VersionControl.versions\` define:
@@ -269,10 +387,11 @@ Configs de versao suportam multiplos tipos:
269
387
  - \`routes-html\`: Caminhos de paginas HTML por idioma
270
388
  - \`routes-video\`: Config de video com \`video.videoType\` (youtube, vimeo, mp4, etc.) e \`video.pathVideo\`
271
389
  - \`routes-audio\`: Config de audio com \`audio.audioType\` (youtube, mp3, etc.) e \`audio.pathAudio\`
390
+ - \`routes-pdf\`: PDF com \`pdf.pathPdf\` por idioma; consulte Documentos PDF.
272
391
  - \`authorization\` (md/html/video): guarda de acesso por chave, papeis e autenticacao externa
273
- - \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`: menus por tipo
274
- - \`hierarchyPage\`: ordem dos containers na pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
275
- - \`hierarchyMenu\`: ordem das secoes do menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
392
+ - \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`, \`menus-header-pdf\`: menus por tipo
393
+ - \`hierarchyPage\`: ordem dos containers na pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
394
+ - \`hierarchyMenu\`: ordem das secoes do menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
276
395
 
277
396
  Cada rota pode incluir \`title\`, \`description\` (por idioma), \`titleCss\`, \`titlePosition: "center"\`, \`descriptionPosition: "center"\`, \`titleIsVisible\`, \`descriptionIsVisible\`.
278
397
 
@@ -297,37 +416,84 @@ Opcoes por rota em \`routes-md\`, \`routes-html\` e \`routes-video\`:
297
416
 
298
417
  - \`GITPAGEDOCS_REPOSITORY_SEARCH\`: ativa/desativa busca remota localmente
299
418
  - \`GITHUB_ACTIONS\`: ativa comportamento especifico de GitHub Pages
419
+
420
+ ## Comportamento do site e padrões
421
+
422
+ | Chave | Padrão / finalidade |
423
+ | --- | --- |
424
+ | \`ActiveNavigation\` | true; navegação rápida e atalho Ctrl+K |
425
+ | \`FocusMode / focusMode\` | Habilitação geral (true) e controles independentes de cópia, download, seção e documento; consulte Modo foco |
426
+ | \`pdf\` | Habilitação geral, prévia, download e nova aba; todos true |
427
+ | \`nestedMenusEnabled\` | true; árvore recursiva, ou destinos em lista plana quando false |
428
+ | \`RouteGuide\` | true; breadcrumbs, com sobrescrita por padrão da versão e rota Markdown |
429
+ | \`accessibility\` | Habilitado por padrão; opções de narração na página Acessibilidade |
430
+ | \`HideThemeSelector\` | false; true oculta o seletor de tema |
431
+ | \`FooterEnabled\` | true; exibe o rodapé |
432
+ | \`FooterLinkName / FooterLinkUrl\` | Texto e destino do link do rodapé |
433
+ | \`FooterDateMode / FooterDateCustom\` | browser, year ou custom; custom usa o texto configurado |
434
+ | \`SiteHeaderName / SiteIconPath\` | Marca do cabeçalho e caminho do ícone do site |
435
+ | \`audioPlayerEnabled\` | true; controles de áudio de fundo |
436
+ | \`audioAutoPlayOnLoad\` | false; autoplay depende da política do navegador |
437
+ | \`audioLoopEnabled / audioSequentialPlayback\` | false; repetir faixa / avançar faixas nativas |
438
+ | \`audioAllowUserChoice\` | Permite escolher faixa quando a playlist tem várias entradas |
439
+ | \`audioTracks\` | Objetos com url, type e title por idioma |
440
+ | \`audioPopoverHideSource / audioPopoverShowMinutes\` | false / true; origem e duração de faixas nativas |
441
+ | \`audioPopoverSourceCustomLabel\` | Texto opcional da origem por idioma |
442
+ | \`mediaExclusivePlayback\` | true; um áudio entre narração, rádio, faixas e vídeo |
443
+ | \`AiChatEnabled / AiChatAutoLockSeconds\` | true / 30; exibe chat e bloqueia por inatividade (0 desativa temporizador) |
444
+ | \`docsAccess\` | enabled e publicKey configuram o bloqueio da documentação; arquivos públicos continuam públicos |
445
+ | \`RouteguideBrandPositionDefault / RouteguideBrandContainerTopDefault\` | center / false; posição do sumário de títulos, separado dos breadcrumbs |
446
+ | \`TocScrollMaxHeightDesktop / TocScrollMaxHeightMobile\` | Limites de rolagem do sumário; comprimentos CSS como min(65vh, 400px) |
447
+
448
+ ## Adicionar versão ou documento
449
+
450
+ Crie a pasta da versão com seu config e registre-a em \`VersionControl.versions\` com \`id\` e \`path\`. Adicione uma entrada \`routes-md\` com ID único e caminhos por idioma; acrescente destinos correspondentes no menu. Use \`routeDefaults\` para valores compartilhados pelas rotas; campos explícitos da rota prevalecem. Consulte Navegação para submenus e sobrescritas de \`RouteGuide\`.
451
+
452
+ Opções visuais são configuração pública. Nunca coloque credenciais de provedor ou chaves privadas no JSON do site. Os exemplos de Rotas autorizadas demonstram controles no cliente, não proteção de arquivos para download no servidor.
453
+
454
+ A entrada \`QuickNavigation\` controla a aparência em ícone/texto do botão Ctrl+K. O atalho de teclado e o painel de busca permanecem disponíveis.
300
455
  `,
301
- deployment: `# Publicacao
456
+ deployment: `# Publicação
457
+
458
+ Escolha o visualizador oficial para um repositório público, publique seu próprio GitHub Pages ou hospede um export estático compilado do runtime.
302
459
 
303
- Git Page Docs roda como app Next.js com dois alvos: servidor local e GitHub Pages.
460
+ ## Visualizador oficial
304
461
 
305
- ## Publicacao local
462
+ Faça commit da pasta \`gitpagedocs/\` gerada no repositório público. Abra \`https://vidigal-code.github.io/git-page-docs/OWNER/REPOSITORY/\` e escolha versão e idioma. O visualizador busca configuração e conteúdo no repositório. Essa URL não torna público um repositório privado.
306
463
 
307
- Use:
464
+ ## Seu site no GitHub Pages
308
465
 
309
- 1. \`npm run build\`
310
- 2. \`npm start\`
466
+ Requisitos: repositório Git, origin GitHub, permissão de push e GitHub CLI autenticado (\`gh auth login\`) quando a CLI configura o Pages.
311
467
 
312
- Isso sobe runtime Node + Next.js usando a pasta local \`gitpagedocs/\`.
468
+ \`\`\`bash
469
+ npx gitpagedocs pages deploy --owner OWNER --repo REPOSITORY
470
+ \`\`\`
313
471
 
314
- ## Publicacao em GitHub Pages
472
+ O fluxo confirma o destino, gera docs e \`.github/workflows/gitpagedocs-pages.yml\`, faz commit e push e solicita GitHub Actions como fonte do Pages. Para mudar apenas a fonte, use \`npx gitpagedocs pages actions\`. Para publicar em subcaminho, passe \`--path docs\`.
315
473
 
316
- Em build de GitHub Actions:
474
+ Acompanhe o GitHub Actions até o deploy terminar; a URL impressa pela CLI pode aparecer antes do fim do build remoto. Sites de projeto normalmente usam \`https://OWNER.github.io/REPOSITORY/\`; sites de usuário/organização usam a raiz do repositório \`OWNER.github.io\`.
317
475
 
318
- - \`GITHUB_ACTIONS=true\`
319
- - comportamento de export estatico e habilitado pela configuracao
320
- - pagina inicial de busca de repositorio fica ativa
476
+ ## Contrato do build
321
477
 
322
- ## Fluxo de publish do pacote
478
+ O workflow instala dependências do workspace com pnpm fixado, compila o visualizador e envia o artefato estático com as actions oficiais do Pages. O job de deploy exige \`pages: write\`, \`id-token: write\` e o ambiente \`github-pages\`.
323
479
 
324
- Para publicar no npm:
480
+ - \`GITHUB_ACTIONS=true\` ativa export estático do Next.js.
481
+ - \`GITHUB_REPOSITORY=OWNER/REPOSITORY\` determina a base do repositório.
482
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH=true\` ativa o build da busca inicial.
483
+ - \`GITPAGEDOCS_BASE_PATH\` sobrescreve explicitamente a base; \`GITPAGEDOCS_PATH\` define o subcaminho dos docs.
484
+ - \`GITPAGEDOCS_DIST_DIR\` separa saídas de build/dev quando há dois servidores locais.
325
485
 
326
- - atualize versao no \`package.json\`
327
- - execute \`npm publish --access public\`
328
- - valide autenticacao com \`npm whoami\`
486
+ \`pnpm build\` sem o ambiente do Pages produz um build de produção Next.js; sozinho não valida export estático. Preserve \`.nojekyll\` ao hospedar o export no Pages.
329
487
 
330
- Se \`build:prebuilt\` for pulado no Windows, use CI para gerar artefatos prebuilt.
488
+ ## Export independente
489
+
490
+ Em um checkout do runtime com dependências instaladas, \`node cli/index.mjs --home --output gitpagedocshome --no-interactive\` compila \`frontend/\` e empacota uma distribuição estática. \`--search true\` ativa a busca inicial de repositórios. A saída inclui arquivos estáticos, README, Dockerfile e exemplo de ambiente; a pasta de destino é recriada. Um servidor estático serve os arquivos; alterar configuração de ambiente usada no build exige nova compilação.
491
+
492
+ ## Releases npm para mantenedores
493
+
494
+ 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.
495
+
496
+ 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.
331
497
  `,
332
498
  architecture: `# Arquitetura
333
499
 
@@ -472,6 +638,414 @@ Cada template normalmente contem:
472
638
  - mantenha contraste acessivel
473
639
  - padronize escala de espaco e borda
474
640
  - ofereca variantes dark e light quando possivel
641
+
642
+ ## Escolher e personalizar
643
+
644
+ Escolha um tema pelo seletor ou configure \`site.ThemeDefault\` com seu ID exato. \`ThemeModeDefault\` define o modo inicial claro/escuro. \`HideThemeSelector\` esconde o seletor; o tema selecionado continua aplicado.
645
+
646
+ No seu repositório, execute a CLI com \`--layoutconfig\`, edite o template gerado e mantenha o ID coerente com \`layoutsConfig.json\`. O conteúdo da rota e \`site.icons\` são independentes do catálogo de temas. Use \`currentColor\` para ícones que herdam a cor do texto ou configure cores claras/escuras com contraste suficiente.
647
+
648
+ Ao contribuir no Git Page Docs, a fonte autoral é \`gitpagelayouts/v2/base.json\` com \`gitpagelayouts/v2/layouts/<id>.json\`. Execute \`pnpm layouts:sync\` para gerar templates e documentação. Edições diretas nos templates gerados podem ser substituídas pela sincronização.
649
+ `,
650
+ mcp: `# Servidor MCP
651
+
652
+ O servidor Model Context Protocol expõe 20 tools e 7 resources por **stdio**. Ele inicia como processo filho do cliente MCP. Não abre porta HTTP nem executa um daemon em segundo plano.
653
+
654
+ ## Instalar e conectar
655
+
656
+ Use Node.js 20+. Instale a CLI no projeto com \`npm install --save-dev @gitpagedocs/cli\`; ela inclui o servidor e o runtime TypeScript. A instalação global também permite \`gitpagedocs mcp start\`. Para execução avulsa, use \`npx --yes @gitpagedocs/cli mcp start\`.
657
+
658
+ No VS Code, crie \`.vscode/mcp.json\` com a configuração abaixo. A pasta de trabalho do processo é a raiz do projeto; o comando MCP não possui flags \`--root\` ou \`--cwd\`.
659
+
660
+ \`\`\`json
661
+ {
662
+ "servers": {
663
+ "gitpagedocs": {
664
+ "type": "stdio",
665
+ "command": "node",
666
+ "args": [
667
+ "\${workspaceFolder}/node_modules/@gitpagedocs/cli/index.mjs",
668
+ "mcp",
669
+ "start"
670
+ ],
671
+ "cwd": "\${workspaceFolder}"
672
+ }
673
+ }
674
+ }
675
+ \`\`\`
676
+
677
+ Abra os controles de servidor MCP do cliente, inicie GitPageDocs e liste tools/resources. Teste \`list_files\` com \`{"path":".","recursive":false}\` e leia \`project://readme\`. Essas operações não precisam de chave de provedor. Um terminal iniciado com \`mcp start\` aguarda JSON-RPC; texto comum no stdin não é um comando de chat. Em um checkout do código, a entrada direta é \`node --import tsx mcp/src/bin.ts\`, não \`index.ts\`.
678
+
679
+ ## Configurar um provedor
680
+
681
+ As chamadas de provedor leem credenciais do ambiente do processo MCP. O MCP não carrega \`.env\` nem o cofre criptografado da CLI automaticamente. Use o recurso de entrada protegida/segredos do cliente para injetar variáveis; nunca grave chaves reais em configuração versionada. Reinicie o processo MCP após alterar seu ambiente.
682
+
683
+ Selecione o provedor com \`configure_ai_provider\` ou pelo arquivo \`.gitpagedocs-mcp.json\` na raiz do projeto:
684
+
685
+ \`\`\`json
686
+ {
687
+ "provider": "ollama",
688
+ "model": "llama3"
689
+ }
690
+ \`\`\`
691
+
692
+ | Provider | Environment |
693
+ | --- | --- |
694
+ | \`openai\` | \`OPENAI_API_KEY\` |
695
+ | \`anthropic\` | \`ANTHROPIC_API_KEY / CLAUDE_API_KEY\` |
696
+ | \`gemini\` | \`GEMINI_API_KEY / GOOGLE_API_KEY\` |
697
+ | \`openrouter\` | \`OPENROUTER_API_KEY\` |
698
+ | \`ollama\` | \`OLLAMA_BASE_URL\` |
699
+ | \`azure-openai\` | \`AZURE_OPENAI_API_KEY + AZURE_OPENAI_BASE_URL\` |
700
+ | \`mistral\` | \`MISTRAL_API_KEY\` |
701
+ | \`deepseek\` | \`DEEPSEEK_API_KEY\` |
702
+ | \`cohere\` | \`COHERE_API_KEY\` |
703
+ | \`groq\` | \`GROQ_API_KEY\` |
704
+ | \`xai\` | \`XAI_API_KEY\` |
705
+ | \`together\` | \`TOGETHER_API_KEY\` |
706
+ | \`fireworks\` | \`FIREWORKS_API_KEY\` |
707
+ | \`perplexity\` | \`PERPLEXITY_API_KEY\` |
708
+
709
+ Sem seleção válida, o provedor padrão é OpenAI. Ollama não exige chave de API; o serviço local e o modelo escolhido precisam estar disponíveis. \`OLLAMA_BASE_URL\` é opcional. A URL base do Azure é a URL completa da operação de chat, incluindo deployment e versão da API quando exigidos. A lista de modelos é um catálogo distribuído, não uma verificação de disponibilidade em tempo real.
710
+
711
+ ## Referência de tools
712
+
713
+ \`?\` indica argumento opcional. Caminhos e conteúdo são strings; \`recursive\` é booleano. Os identificadores de provedor vêm do catálogo. Execute as tools pela interface de ferramentas do cliente MCP.
714
+
715
+ | Tool | Argumentos | Comportamento |
716
+ | --- | --- | --- |
717
+ | \`list_files\` | \`path?, recursive?\` | Lista arquivos (padrão: pasta atual, sem recursão) |
718
+ | \`read_file\` | \`path\` | Lê texto UTF-8 |
719
+ | \`write_file\` | \`path, content\` | Grava o arquivo inteiro; cria pastas necessárias |
720
+ | \`search_project\` | \`query, extension?\` | Busca por trecho sem distinguir maiúsculas |
721
+ | \`list_ai_providers\` | \`—\` | Consulta o catálogo de provedores |
722
+ | \`list_ai_models\` | \`provider?\` | Consulta o catálogo local de modelos |
723
+ | \`configure_ai_provider\` | \`provider, model?\` | Salva .gitpagedocs-mcp.json |
724
+ | \`ask_ai\` | \`prompt, provider?, model?, system?\` | Retorna uma resposta, sem histórico de conversa |
725
+ | \`generate_documentation\` | \`path, provider?\` | Documenta um arquivo fonte |
726
+ | \`generate_api_docs\` | \`path, provider?\` | Descreve a API de um arquivo |
727
+ | \`generate_database_docs\` | \`path, provider?\` | Descreve modelos de dados de um arquivo |
728
+ | \`analyze_source_code\` | \`path, provider?\` | Analisa um arquivo fonte |
729
+ | \`generate_readme\` | \`provider?\` | Usa a árvore e package.json |
730
+ | \`generate_architecture_docs\` | \`provider?\` | Usa a árvore do repositório |
731
+ | \`analyze_repository\` | \`provider?\` | Analisa a árvore do repositório |
732
+ | \`analyze_project\` | \`provider?\` | Analisa a árvore e package.json |
733
+ | \`generate_changelog\` | \`provider?\` | Usa até 80 commits; usa a árvore se indisponíveis |
734
+ | \`generate_release_notes\` | \`provider?\` | Usa o mesmo contexto do changelog |
735
+ | \`validate_docs\` | \`provider?\` | Pede ao provedor uma revisão do Markdown coletado |
736
+ | \`update_documentation\` | \`path, instructions?, provider?\` | Gera e grava uma região gerenciada |
737
+
738
+ \`generate_*\`, \`analyze_*\`, \`ask_ai\` e \`validate_docs\` retornam texto; não salvam automaticamente. \`validate_docs\` é uma revisão feita pelo provedor, não um verificador determinístico de links. Somente \`write_file\`, \`configure_ai_provider\` e \`update_documentation\` gravam arquivos. \`update_documentation\` preserva texto fora de \`<!-- gitpagedocs:start -->\` / \`<!-- gitpagedocs:end -->\`; acrescenta uma região quando o par válido não existe. O servidor não exibe confirmação própria; configure permissões no cliente MCP.
739
+
740
+ ## Referência de resources
741
+
742
+ | URI | Conteúdo |
743
+ | --- | --- |
744
+ | \`project://structure\` | Árvore do repositório |
745
+ | \`project://docs\` | Documentos Markdown coletados |
746
+ | \`project://config\` | Configuração resolvida e sourcePath |
747
+ | \`project://repository\` | Conteúdo de package.json |
748
+ | \`project://readme\` | README.md |
749
+ | \`project://ai/providers\` | Catálogo de provedores |
750
+ | \`project://ai/models\` | Catálogo de modelos por provedor |
751
+
752
+ ## Exemplo de uso
753
+
754
+ 1. Leia \`project://structure\` e \`project://readme\`.
755
+ 2. Execute \`list_ai_providers\` e \`list_ai_models\` para escolher provedor/modelo.
756
+ 3. Execute \`generate_api_docs\` com \`{"path":"src/index.ts"}\` e revise o texto retornado.
757
+ 4. Salve o texto aprovado com \`write_file\`, ou use \`update_documentation\` com \`{"path":"docs/api.md","instructions":"Documente a API pública em português."}\` para uma região gerenciada.
758
+
759
+ A etapa de geração envia o conteúdo selecionado do projeto ao provedor configurado.
760
+
761
+ ## Limites e diagnóstico
762
+
763
+ - Leitura de arquivos: até 512.000 bytes. Listagem: até 2.000 entradas; árvores coletadas do projeto: 400 entradas.
764
+ - Busca: até 5.000 entradas, 200 resultados e 240 caracteres por linha encontrada.
765
+ - Coleta de documentação: primeiros 40 arquivos Markdown entre até 2.000 entradas; arquivos acima de 40.000 bytes são ignorados. O contexto do provedor é limitado a 24.000 caracteres.
766
+ - A listagem ignora pastas de dependências/build como \`node_modules\`, \`.git\`, \`.next\`, \`out\`, \`dist\`, \`prebuilt\`, \`.turbo\` e \`coverage\`. Não interpreta \`.gitignore\`; arquivos como \`.env\` não são excluídos automaticamente. Execute somente em projeto confiável e selecione o conteúdo que será exposto.
767
+ - A verificação de caminhos é lexical; o processo não é um sandbox do sistema operacional nem garante isolamento de symlinks/junctions. Ler \`project://config\` pode importar configuração JavaScript/TypeScript.
768
+ - Falhas de tools incluem \`isError: true\`. Resources ausentes retornam \`Unavailable: ...\`. Consulte stderr no cliente para falhas de inicialização; stdout é reservado para JSON-RPC.
769
+ - Se as tools funcionam mas a geração falha, confira seleção do provedor, credenciais de ambiente, modelo e conectividade.
770
+ `,
771
+ cli: `# Referência da CLI
772
+
773
+ ## Comandos da CLI
774
+
775
+ | Comando | Descricao |
776
+ |---------|------------|
777
+ | \`npx @gitpagedocs/cli\` | Gera config e docs em \`gitpagedocs/\` |
778
+ | \`npx @gitpagedocs/cli --layoutconfig\` | Tambem gera layouts/templates locais em \`gitpagelayouts/\` |
779
+ | \`npx @gitpagedocs/cli --home\` | Distribuicao standalone (\`gitpagedocshome/\`) |
780
+ | \`npx @gitpagedocs/cli --push --owner X --repo Y\` | Configura workflow, commit, push |
781
+ | \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interativo com prompts (padrao em um terminal) |
782
+ | \`npx @gitpagedocs/cli --no-interactive\` / \`--yes\` / \`-y\` | Nunca pergunta; usa flags e padroes |
783
+ | \`gitpagedocs ai\` | Gerador interativo de documentacao com IA |
784
+ | \`gitpagedocs chat [pergunta]\` | Chat de IA com streaming no terminal (REPL em TTY; resposta unica com pergunta ou stdin) |
785
+ | \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista provedores de IA / modelos do catalogo |
786
+ | \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Gera documentacao com IA |
787
+ | \`gitpagedocs deploy\` / \`pages [actions\\|deploy]\` | Configura GitHub Pages via Actions + push |
788
+ | \`gitpagedocs docs\` | Atualiza as regioes gerenciadas de README/CONTRIBUTING/SECURITY |
789
+ | \`gitpagedocs password\` | Define a senha de acesso a documentacao (chave publica em \`site.docsAccess\`) |
790
+ | \`gitpagedocs config\` / \`config clear\` | Mostra a config resolvida / apaga a config salva e o cofre de chaves |
791
+ | \`gitpagedocs doctor\` / \`version\` / \`update\` | Diagnostico / versao / verificacao de atualizacao no registro |
792
+ | \`gitpagedocs mcp start\` | Inicia o servidor MCP via stdio |
793
+
794
+ Instale globalmente com \`npm install -g @gitpagedocs/cli\` ou rode sem instalar com \`npx @gitpagedocs/cli\`.
795
+
796
+ ## Opcoes da CLI
797
+
798
+ | Opcao | Descricao |
799
+ |-------|-----------|
800
+ | \`--owner <user>\` | Owner do GitHub |
801
+ | \`--repo <repo>\` | Repositorio GitHub |
802
+ | \`--path <subpath>\` | Subcaminho dos docs (ex: \`docs\`); sem ele, base path = nome do repo para CSS/JS em project sites |
803
+ | \`--output <dir>\` | Diretorio de saida (padrao: \`gitpagedocs\`) |
804
+ | \`--search <true-or-false>\` | Habilita/desabilita busca de repositorio (\`--home\`) |
805
+ | \`--layoutconfig\` | Gera layouts locais em \`gitpagelayouts/\` |
806
+ | \`--layouts-dir <dir>\` | Pasta dos layouts locais (padrao: \`gitpagelayouts\`) |
807
+ | \`--push\` | Cria workflow, commit de artefatos, push |
808
+ | \`--pages-actions\` | Apenas muda a fonte do GitHub Pages para GitHub Actions (igual a \`pages actions\`) |
809
+ | \`--home\` | Gera \`gitpagedocshome/\` (estatico + .env + Dockerfile) |
810
+
811
+ ## Saida gerada
812
+
813
+ - \`gitpagedocs/config.json\` – config raiz
814
+ - \`gitpagedocs/icon.svg\` – icone padrao
815
+ - \`gitpagedocs/docs/versions/<ver>/config.json\` – rotas por versao
816
+ - \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs em markdown
817
+ - \`gitpagelayouts/\` – apenas com \`--layoutconfig\` (pasta configuravel com \`--layouts-dir\`)
818
+
819
+ ## Exemplos e limites dos comandos
820
+
821
+ \`\`\`bash
822
+ npx gitpagedocs --no-interactive --owner octocat --repo handbook
823
+ npx gitpagedocs --layoutconfig --layouts-dir assets/layouts --no-interactive
824
+ npx gitpagedocs chat "Explique este projeto" --provider ollama --model llama3
825
+ npx gitpagedocs pages deploy --owner octocat --repo handbook --path docs
826
+ npx gitpagedocs mcp start
827
+ \`\`\`
828
+
829
+ - \`init\` é um alias da geração. \`providers\` equivale a \`provider\`; \`--version\` e \`-v\` equivalem a \`version\`.
830
+ - \`document\`, \`document:repo\`, \`document:file\`, \`document:folder\` e \`--ai\` selecionam o fluxo interativo de documentação. Escolha diretórios nos prompts; esses aliases não implementam uma API separada de arquivo/pasta por argumento posicional.
831
+ - \`chat\` aceita \`--provider <id>\`, \`--model <id>\` e \`--system <prompt>\`. Com pergunta ou stdin recebe resposta única; um terminal interativo sem pergunta inicia uma conversa.
832
+ - \`--build\`, \`--serve\` e \`--full\` são flags de compatibilidade: o scaffold comum continua apenas configuração e elas não iniciam um servidor local.
833
+ - \`--home\` compila \`frontend/\` a partir de um checkout do runtime e grava o export estático com arquivos auxiliares. A pasta de saída é recriada quando diferente de \`.\`; mantenha sua documentação fonte fora dela. Instalar apenas a CLI não fornece \`frontend/\`.
834
+ - \`pages actions\` apenas configura a fonte do Pages; \`pages deploy\` e \`--push\` geram, fazem commit e push. Uma URL impressa não significa que o build remoto terminou: acompanhe o GitHub Actions.
835
+ - \`update\` consulta o npm e imprime um comando de instalação; não atualiza a CLI silenciosamente.
836
+
837
+ ## Configuração e credenciais
838
+
839
+ As opções visuais ficam em \`gitpagedocs/config.json\`. O gerador interativo/chat salva \`.gitpagedocsconfig\` e o cofre criptografado \`.gitpagedocsvault\` na pasta de configuração do usuário: \`%APPDATA%/gitpagedocs\` no Windows, \`~/Library/Application Support/gitpagedocs\` no macOS e a pasta XDG no Linux. \`config clear\` remove essas configurações e o cofre. MCP usa \`.gitpagedocs-mcp.json\` na raiz do projeto e o ambiente do processo; consulte a página MCP.
840
+
841
+ \`gitpagedocs docs\` atualiza somente regiões delimitadas por marcadores em README.md, CONTRIBUTING.md e SECURITY.md, preservando o texto ao redor. \`password\` configura o par de chaves de acesso à documentação; controles de apresentação no cliente não tornam confidenciais arquivos de um repositório público.
842
+ `,
843
+ navigation: `# Navegação e submenus
844
+
845
+ Rotas definem o conteúdo; menus definem como o leitor o encontra. Configure-os em \`gitpagedocs/docs/versions/<version>/config.json\`. Opções visuais globais ficam em \`gitpagedocs/config.json\`.
846
+
847
+ \`\`\`json
848
+ {
849
+ "site": {
850
+ "nestedMenusEnabled": true,
851
+ "RouteGuide": true
852
+ }
853
+ }
854
+ \`\`\`
855
+
856
+ ## Montar a árvore de menus
857
+
858
+ 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.
859
+
860
+ 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.
861
+
862
+ \`\`\`json
863
+ {
864
+ "routeDefaults": {
865
+ "RouteGuide": false
866
+ },
867
+ "routes-md": [
868
+ {
869
+ "id": 101,
870
+ "RouteGuide": true,
871
+ "path": {
872
+ "pt": "gitpagedocs/docs/versions/0.0.8/pt/chapter.md",
873
+ "en": "gitpagedocs/docs/versions/0.0.8/en/chapter.md",
874
+ "es": "gitpagedocs/docs/versions/0.0.8/es/chapter.md"
875
+ }
876
+ }
877
+ ],
878
+ "menus-header-md": [
879
+ {
880
+ "id": 900,
881
+ "pt": {
882
+ "title": "Guia"
883
+ },
884
+ "en": {
885
+ "title": "Guide"
886
+ },
887
+ "es": {
888
+ "title": "Guía"
889
+ },
890
+ "submenus": [
891
+ {
892
+ "id": 901,
893
+ "pt": {
894
+ "title": "Capítulos"
895
+ },
896
+ "en": {
897
+ "title": "Chapters"
898
+ },
899
+ "es": {
900
+ "title": "Capítulos"
901
+ },
902
+ "submenus": [
903
+ {
904
+ "id": 101,
905
+ "pt": {
906
+ "title": "Primeiro capítulo",
907
+ "path-click": "gitpagedocs/docs/versions/0.0.8/pt/chapter.md"
908
+ },
909
+ "en": {
910
+ "title": "First chapter",
911
+ "path-click": "gitpagedocs/docs/versions/0.0.8/en/chapter.md"
912
+ },
913
+ "es": {
914
+ "title": "Primer capítulo",
915
+ "path-click": "gitpagedocs/docs/versions/0.0.8/es/chapter.md"
916
+ }
917
+ }
918
+ ]
919
+ }
920
+ ]
921
+ }
922
+ ]
923
+ }
924
+ \`\`\`
925
+
926
+ ## Comportamento do aninhamento
927
+
928
+ \`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.
929
+
930
+ 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.
931
+
932
+ ## Trilha de navegação: RouteGuide
933
+
934
+ \`RouteGuide\` controla os breadcrumbs. A prioridade é \`routes-md[].RouteGuide\` da página, depois \`routeDefaults.RouteGuide\` da versão, depois \`site.RouteGuide\`, usando \`true\` como padrão final. O exemplo desliga a trilha na versão e a liga no capítulo 101. Arquivos existentes da versão \`0.0.8\` aceitam os mesmos campos.
935
+
936
+ \`RouteguideBrand\` e \`RouteguideBrandPosition\` são configurações separadas do sumário de títulos do documento; não controlam os breadcrumbs.
937
+
938
+ ## URLs e anterior/próximo
939
+
940
+ 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.
941
+
942
+ Os botões Voltar/Próximo do rodapé usam \`site.icons.DocumentPrevious\` (\`FiChevronLeft\`) e \`site.icons.DocumentNext\` (\`FiChevronRight\`) 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.
943
+
944
+ 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.
945
+ `,
946
+ focusMode: `# Modo foco
947
+
948
+ O modo foco abre o documento Markdown atual em um diálogo de leitura. Ative-o com \`site.FocusMode\`; o controle aparece apenas para uma página Markdown real. \`site.icons.FocusMode\` muda a aparência em ícone/texto e não habilita ou desabilita o recurso.
949
+
950
+ ## Configurar os controles
951
+
952
+ Mescle este fragmento em \`gitpagedocs/config.json\`:
953
+
954
+ \`\`\`json
955
+ {
956
+ "site": {
957
+ "FocusMode": true,
958
+ "focusMode": {
959
+ "copyEnabled": true,
960
+ "downloadEnabled": true,
961
+ "sectionNavigationEnabled": true,
962
+ "documentNavigationEnabled": true
963
+ }
964
+ }
965
+ }
966
+ \`\`\`
967
+
968
+ 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.
969
+
970
+ ## Seções e documentos
971
+
972
+ - 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.
973
+ - 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.
974
+ - \`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.
975
+ - Documentos sem tradução no idioma ativo, destinos sem Markdown e páginas sem permissão são ignorados.
976
+ - Trocar de documento mantém o diálogo aberto e volta à primeira seção. Contadores de seção/documento mostram a posição atual.
977
+ - \`site.ActiveNavigation\` controla a navegação rápida; não desabilita a navegação de documentos no modo foco.
978
+
979
+ ## Copiar e baixar
980
+
981
+ 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.
982
+
983
+ 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.
984
+
985
+ ## Teclado e leitura
986
+
987
+ O diálogo possui nome acessível, gerenciamento de foco do teclado e controle de fechar. Use Tab para percorrer controles e Escape para fechar. Controles só com ícone continuam com seus nomes traduzidos acessíveis. Fechar o diálogo retorna à documentação.
988
+
989
+ A narração é configurada separadamente em Acessibilidade. Trocar documento ou idioma cancela a narração anterior, evitando continuar a leitura de conteúdo antigo.
990
+ `,
991
+ accessibility: `# Acessibilidade e narração
992
+
993
+ Os controles de acessibilidade incluem narração nativa do navegador para o documento Markdown atual. A narração usa a Web Speech API (\`speechSynthesis\`); não exige chave de API nem serviço externo de voz do GitPageDocs.
994
+
995
+ ## Configuração
996
+
997
+ Mescle estas opções em \`gitpagedocs/config.json\`:
998
+
999
+ \`\`\`json
1000
+ {
1001
+ "site": {
1002
+ "accessibility": {
1003
+ "enabled": true,
1004
+ "narration": {
1005
+ "enabled": true,
1006
+ "defaultRate": 1,
1007
+ "defaultVolume": 1
1008
+ }
1009
+ },
1010
+ "mediaExclusivePlayback": true
1011
+ }
1012
+ }
1013
+ \`\`\`
1014
+
1015
+ - \`site.accessibility.enabled\`: habilita a interface de acessibilidade.
1016
+ - \`site.accessibility.narration.enabled\`: habilita a narração do documento.
1017
+ - \`defaultRate\`: velocidade inicial de \`0.5\` a \`2\`, em passos de \`0.25\`; o padrão é \`1\`.
1018
+ - \`defaultVolume\`: volume inicial de \`0\` (silencioso) a \`1\` (máximo), em passos de \`0.1\`; o padrão é \`1\`.
1019
+ - Todos os controles de habilitação têm padrão \`true\`; opções ausentes usam os padrões distribuídos.
1020
+
1021
+ ## Ler um documento em voz alta
1022
+
1023
+ 1. Abra uma página Markdown e os controles de acessibilidade/narração.
1024
+ 2. Escolha voz e idioma entre os disponibilizados pelo navegador; ajuste velocidade e volume.
1025
+ 3. Inicie a leitura. Pause temporariamente, continue a fala pausada ou encerre a sessão.
1026
+ 4. Para alterar opções de leitura de forma previsível, pare, ajuste os controles e inicie novamente.
1027
+
1028
+ A narração começa somente após sua ação; não há reprodução automática. A seleção automática de voz acompanha o idioma do documento; escolher uma voz explicitamente utiliza o idioma dessa voz. A narração não traduz o documento.
1029
+
1030
+ A fala usa texto legível extraído do Markdown renderizado. Scripts, estilos, conteúdo SVG e elementos ocultos para tecnologias assistivas são excluídos. Documentos longos são lidos por inteiro em blocos sucessivos. Trocar documento ou idioma, desabilitar a narração ou sair da página cancela a fala anterior.
1031
+
1032
+ A visualização comum e o modo foco compartilham preferências de voz, velocidade e volume enquanto a página permanece montada. As preferências não são salvas entre recarregamentos. Valores não numéricos de velocidade ou volume usam \`1\`; valores numéricos fora das faixas suportadas são limitados ao extremo mais próximo.
1033
+
1034
+ ## Um áudio por vez
1035
+
1036
+ Com \`site.mediaExclusivePlayback: true\` (padrão), iniciar ou continuar a narração pausa rádio, faixas de áudio e vídeos de rota. Iniciar essas mídias encerra a narração. Vídeos sem som ficam fora dessa regra. Use \`false\` quando a reprodução simultânea for intencional.
1037
+
1038
+ Essa configuração é compartilhada com a reprodução de mídia existente; não há uma segunda flag de exclusividade para narração. A página continua legível quando a narração está desabilitada.
1039
+
1040
+ ## Disponibilidade de navegador e vozes
1041
+
1042
+ O suporte a fala e as vozes dependem do navegador, do sistema operacional e das vozes instaladas ou fornecidas remotamente. A lista pode chegar depois de a página carregar. Navegadores e dispositivos diferentes podem oferecer idiomas diferentes.
1043
+
1044
+ Ausência de suporte e erros de reprodução são informados na interface. Verifique se há uma voz disponível, se o áudio do sistema está ativo e se houve interação do usuário com a página. Lista de vozes vazia não significa falha ao carregar o documento.
1045
+
1046
+ Não presuma que toda voz funciona offline: as vozes podem ser locais ou remotas. O recurso fala texto; não grava o microfone. A narração complementa a navegação por teclado e leitores de tela, sem substituí-los.
1047
+
1048
+ Consulte a [referência da Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis) para o comportamento do navegador.
475
1049
  `,
476
1050
  faq: `# FAQ
477
1051
 
@@ -502,5 +1076,25 @@ Verifique:
502
1076
  ## Por que GitHub Pages pode se comportar diferente do local?
503
1077
 
504
1078
  Porque o build de GitHub Pages habilita pagina inicial de busca e comportamento especifico de exportacao.
1079
+
1080
+ ## Por que o ícone ainda mostra texto?
1081
+
1082
+ 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.
1083
+
1084
+ ## Por que filhos de menus ou breadcrumbs aparecem diferentes?
1085
+
1086
+ \`nestedMenusEnabled: false\` achata os destinos intencionalmente. Confira \`submenus\`, objetos de idioma e \`path-click\`; confirme que as páginas existem e são acessíveis. Breadcrumbs usam \`RouteGuide\`, com prioridade rota > versão > site. \`RouteguideBrand\` controla o sumário de títulos.
1087
+
1088
+ ## Por que a narração fica muda ou é interrompida?
1089
+
1090
+ Confira suporte do navegador, voz disponível, idioma, volume e saída de áudio. Vozes podem carregar depois ou exigir serviço remoto. Com \`mediaExclusivePlayback: true\`, outra fonte de áudio/vídeo encerra a narração por definição. Trocar de documento cancela a fala antiga. Consulte Acessibilidade.
1091
+
1092
+ ## Por que o MCP fica aguardando ou uma tool falha?
1093
+
1094
+ \`mcp start\` aguarda um cliente MCP por stdio; não é um prompt de chat de terminal. Confira o cwd e use a entrada da CLI publicada ou \`mcp/src/bin.ts\`. Tools de arquivos/catálogo não precisam de provedor; geração exige credenciais no ambiente do processo MCP. O cofre da CLI e \`.env\` não são carregados automaticamente; inspecione \`isError\` e o stderr do cliente.
1095
+
1096
+ ## Por que a regeneração mudou minhas páginas?
1097
+
1098
+ O scaffold regrava rotas, configs e documentação gerada. Revise o Git e mantenha conteúdo específico nas fontes escolhidas. Neste repositório, edite \`cli/content/docs-{en,pt,es}.mjs\` e metadados de rotas antes de regenerar; não use as cópias geradas como única fonte.
505
1099
  `,
506
1100
  };