@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.
- package/builders/config-orchestrator.mjs +2 -1
- package/builders/version-config-builder.mjs +59 -8
- package/content/assets/gitpagedocs-project-guide.pdf +34 -34
- package/content/configuration-examples.mjs +76 -0
- package/content/content-blocks.mjs +142 -0
- package/content/docs-en.mjs +73 -23
- package/content/docs-es.mjs +191 -140
- package/content/docs-pt.mjs +213 -162
- package/content/html-doom.mjs +114 -0
- package/content/operations-en.mjs +70 -0
- package/content/operations-es.mjs +70 -0
- package/content/operations-pt.mjs +70 -0
- package/content/overviews-en.mjs +115 -0
- package/content/overviews-es.mjs +115 -0
- package/content/overviews-pt.mjs +115 -0
- package/content/practical-en.mjs +118 -0
- package/content/practical-es.mjs +118 -0
- package/content/practical-pt.mjs +118 -0
- package/contracts/doc-versions.mjs +2 -2
- package/data/composed-pages.mjs +25 -0
- package/data/default-site-config.mjs +150 -130
- package/data/i18n-langmenu.mjs +43 -28
- package/data/i18n-translations.mjs +7 -7
- package/data/menu-sections.mjs +56 -0
- package/data/path-mappings.mjs +16 -1
- package/data/route-metas.mjs +72 -6
- package/package.json +3 -3
- package/runtime/doc-path-resolver.mjs +23 -2
package/content/docs-pt.mjs
CHANGED
|
@@ -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
|
|
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.
|
|
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.
|
|
43
|
-
"pt": "gitpagedocs/docs/versions/0.0.
|
|
44
|
-
"es": "gitpagedocs/docs/versions/0.0.
|
|
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.
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
-
|
|
87
|
-
- Roteamento por
|
|
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
|
-
-
|
|
90
|
-
- Busca de
|
|
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
|
-
##
|
|
115
|
+
## Navegação rápida
|
|
104
116
|
|
|
105
117
|
- Abra **Primeiros passos** para setup local.
|
|
106
|
-
- Abra **
|
|
107
|
-
- Abra **
|
|
108
|
-
- Abra **Arquitetura** para mapa de
|
|
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
|
|
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: `#
|
|
190
|
+
projectOverview: `# Visão geral do projeto
|
|
171
191
|
|
|
172
|
-
Git Page Docs
|
|
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
|
|
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
|
|
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;
|
|
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
|
|
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);
|
|
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
|
-
|
|
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
|
|
224
|
+
## Tipos de conteúdo
|
|
205
225
|
|
|
206
|
-
| Tipo | Chave config |
|
|
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
|
-
|
|
|
211
|
-
|
|
|
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
|
|
234
|
+
## Visualizador de código fonte
|
|
215
235
|
|
|
216
|
-
O config da
|
|
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
|
-
-
|
|
219
|
-
-
|
|
220
|
-
- Listagem de
|
|
221
|
-
-
|
|
222
|
-
-
|
|
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
|
-
##
|
|
252
|
+
## Reprodução de midia (um som por vez)
|
|
233
253
|
|
|
234
|
-
\`site.mediaExclusivePlayback\` (
|
|
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
|
|
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
|
-
##
|
|
258
|
+
## Variáveis de ambiente
|
|
239
259
|
|
|
240
|
-
- \`GITPAGEDOCS_REPOSITORY_SEARCH\` – busca de
|
|
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
|
|
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
|
|
248
|
-
- **Escolha de modelo** — a partir do
|
|
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
|
|
251
|
-
- **Provedores resilientes** — erros
|
|
252
|
-
- **
|
|
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,
|
|
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: `#
|
|
278
|
+
configuration: `# Configuração
|
|
259
279
|
|
|
260
|
-
A
|
|
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
|
|
265
|
-
- \`gitpagedocs/langs/<lang>.json\` guarda os textos daquele idioma: \`langmenu\` (
|
|
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
|
|
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
|
-
##
|
|
289
|
+
## Seção \`site\`
|
|
270
290
|
|
|
271
291
|
Principais chaves:
|
|
272
292
|
|
|
273
|
-
- \`name\`:
|
|
274
|
-
- \`defaultLanguage\`: idioma
|
|
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
|
|
279
|
-
- \`docsVersion\`:
|
|
280
|
-
- \`ActiveNavigation\`: habilita
|
|
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\`:
|
|
283
|
-
- \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamanho do
|
|
284
|
-
- \`IconImageMenuHeaderLightImg\`, \`IconImageMenuHeaderDarkImg\`:
|
|
285
|
-
- \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamanho do
|
|
286
|
-
- \`IconProjectLinkLightImg\`, \`IconProjectLinkDarkImg\`:
|
|
287
|
-
- \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamanho do
|
|
288
|
-
- \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`:
|
|
289
|
-
- \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamanho do
|
|
290
|
-
- \`IconInfoHeaderMenuLightImg\`, \`IconInfoHeaderMenuDarkImg\`:
|
|
291
|
-
- \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamanho do
|
|
292
|
-
- \`IconPreviewProjectLinkLightImg\`, \`IconPreviewProjectLinkDarkImg\`:
|
|
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
|
|
316
|
+
## Controles de idioma, tema, foco, navegação rápida, PDF e documentos
|
|
297
317
|
|
|
298
|
-
Em \`gitpagedocs/config.json\`,
|
|
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": "
|
|
325
|
+
"reactIcon": true, "tag": "SiGoogletranslate", "size": "22px",
|
|
306
326
|
"colorDark": "currentColor", "colorLight": "currentColor"
|
|
307
327
|
},
|
|
308
328
|
"ThemeSelector": {
|
|
309
|
-
"reactIcon": true, "tag": "
|
|
329
|
+
"reactIcon": true, "tag": "LuPencil", "size": "22px",
|
|
310
330
|
"colorDark": "currentColor", "colorLight": "currentColor"
|
|
311
331
|
},
|
|
312
332
|
"FocusMode": {
|
|
313
|
-
"reactIcon": true, "tag": "
|
|
333
|
+
"reactIcon": true, "tag": "LuBookOpen", "size": "22px",
|
|
314
334
|
"colorDark": "currentColor", "colorLight": "currentColor"
|
|
315
335
|
},
|
|
316
336
|
"QuickNavigation": {
|
|
317
|
-
"reactIcon": true, "tag": "
|
|
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
|
|
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
|
-
##
|
|
365
|
+
## Seção \`VersionControl\`
|
|
328
366
|
|
|
329
367
|
\`VersionControl.versions\` define:
|
|
330
368
|
|
|
331
|
-
- \`id\`: identificador da
|
|
332
|
-
- \`path\`: caminho do config da
|
|
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
|
-
##
|
|
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
|
|
378
|
+
- \`translations\`: labels de UI para not-found e navegação
|
|
341
379
|
|
|
342
|
-
##
|
|
380
|
+
## Autorização (config de versão)
|
|
343
381
|
|
|
344
|
-
- \`auth\`:
|
|
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
|
|
387
|
+
## Tipos de conteúdo (config de versão)
|
|
350
388
|
|
|
351
|
-
Configs de
|
|
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
|
|
355
|
-
- \`routes-html\`: Caminhos de
|
|
356
|
-
- \`routes-video\`: Config de
|
|
357
|
-
- \`routes-audio\`: Config de
|
|
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/
|
|
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
|
|
362
|
-
- \`hierarchyMenu\`: ordem das
|
|
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
|
-
|
|
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
|
-
##
|
|
406
|
+
## Variáveis por rota (blockLink, container, url, browseAll)
|
|
369
407
|
|
|
370
|
-
|
|
408
|
+
Opções por rota em \`routes-md\`, \`routes-html\` e \`routes-video\`:
|
|
371
409
|
|
|
372
|
-
- **\`blockLink\`** (
|
|
373
|
-
- **\`container\`** – \`"full"\` = altura
|
|
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\`
|
|
375
|
-
- **\`browseAll\`** (
|
|
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
|
|
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
|
|
381
|
-
- **
|
|
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
|
-
##
|
|
421
|
+
## Variáveis de ambiente
|
|
384
422
|
|
|
385
423
|
- \`GITPAGEDOCS_REPOSITORY_SEARCH\`: ativa/desativa busca remota localmente
|
|
386
|
-
- \`GITHUB_ACTIONS\`: ativa comportamento
|
|
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;
|
|
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
|
|
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
|
|
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,
|
|
480
|
-
- \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota,
|
|
481
|
-
- \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/
|
|
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
|
-
##
|
|
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
|
|
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
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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
|
-
##
|
|
571
|
+
## Seção global auth
|
|
534
572
|
|
|
535
|
-
Use \`auth\` no topo do config de
|
|
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
|
-
##
|
|
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
|
|
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/
|
|
601
|
-
- toggle light/dark resolve o tema pareado por
|
|
602
|
-
-
|
|
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
|
|
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 |
|
|
781
|
+
| Comando | Descrição |
|
|
744
782
|
|---------|------------|
|
|
745
783
|
| \`npx @gitpagedocs/cli\` | Gera config e docs em \`gitpagedocs/\` |
|
|
746
|
-
| \`npx @gitpagedocs/cli --layoutconfig\` |
|
|
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 (
|
|
750
|
-
| \`npx @gitpagedocs/cli --no-interactive\` / \`--yes\` / \`-y\` | Nunca pergunta; usa flags e
|
|
751
|
-
| \`gitpagedocs ai\` | Gerador interativo de
|
|
752
|
-
| \`gitpagedocs chat [pergunta]\` | Chat de IA com streaming no terminal (REPL em TTY; resposta
|
|
753
|
-
| \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista provedores de IA / modelos do
|
|
754
|
-
| \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Gera
|
|
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
|
|
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\` |
|
|
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
|
-
##
|
|
802
|
+
## Opções da CLI
|
|
765
803
|
|
|
766
|
-
|
|
|
804
|
+
| Opção | Descrição |
|
|
767
805
|
|-------|-----------|
|
|
768
806
|
| \`--owner <user>\` | Owner do GitHub |
|
|
769
|
-
| \`--repo <repo>\` |
|
|
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>\` |
|
|
772
|
-
| \`--search <true-or-false>\` | Habilita/desabilita busca de
|
|
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 (
|
|
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
|
-
##
|
|
817
|
+
## Saída gerada
|
|
780
818
|
|
|
781
819
|
- \`gitpagedocs/config.json\` – config raiz
|
|
782
|
-
- \`gitpagedocs/icon.svg\` –
|
|
783
|
-
- \`gitpagedocs/docs/versions/<ver>/config.json\` – rotas por
|
|
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
|
|
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
|
|
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
|
|
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
|
-
-
|
|
939
|
-
-
|
|
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
|
|
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
|
|
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
|
-
-
|
|
1023
|
-
- paths markdown do
|
|
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
|
|
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
|
|
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
|
|
1084
|
+
## Por que tema não aplica corretamente?
|
|
1034
1085
|
|
|
1035
1086
|
Verifique:
|
|
1036
1087
|
|
|
1037
|
-
- \`layoutsConfig.json\`
|
|
1038
|
-
- ids de template
|
|
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
|
|
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\`.
|
|
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
|
|