@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-es.mjs
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
+
import { practicalEs } from "./practical-es.mjs";
|
|
2
|
+
import { operationsEs } from "./operations-es.mjs";
|
|
3
|
+
import { overviewsEs } from "./overviews-es.mjs";
|
|
4
|
+
import { CONTENT_BLOCKS_DOCS } from "./content-blocks.mjs";
|
|
5
|
+
import { PARENT_MENU_JSON } from "./configuration-examples.mjs";
|
|
6
|
+
|
|
1
7
|
export const docsEs = {
|
|
8
|
+
...practicalEs,
|
|
9
|
+
...operationsEs,
|
|
10
|
+
...overviewsEs,
|
|
11
|
+
contentBlocks: CONTENT_BLOCKS_DOCS.es,
|
|
2
12
|
pdf: `# Documentos PDF
|
|
3
13
|
|
|
4
14
|
PDF es un tipo de contenido propio junto con Markdown, HTML, código fuente, vídeo y audio. La vista previa utiliza el visor nativo de PDF del navegador. Las acciones de descarga y apertura en una pestaña nueva se configuran de forma independiente.
|
|
@@ -24,13 +34,15 @@ Añade este bloque dentro de \`site\` en \`gitpagedocs/config.json\`:
|
|
|
24
34
|
}
|
|
25
35
|
\`\`\`
|
|
26
36
|
|
|
27
|
-
\`enabled\` es el interruptor general del contenido PDF. Los demás campos controlan la vista previa, el botón de descarga y el
|
|
37
|
+
\`enabled\` es el interruptor general del contenido PDF. Los demás campos controlan la vista previa, el botón de descarga y el botón de nueva pestaña. Cada campo omitido toma el valor \`true\`, también en configuraciones antiguas.
|
|
28
38
|
|
|
29
39
|
La precedencia de las acciones es \`ruta.pdf.<flag>\` > \`site.pdf.<flag>\` > \`true\`. Un \`true\` explícito en la ruta activa esa acción aunque el valor del sitio sea \`false\`; \`site.pdf.enabled: false\` sigue desactivando todos los PDFs. Si falta la ruta del idioma seleccionado, el PDF no está disponible; no hay cambio automático de idioma.
|
|
30
40
|
|
|
41
|
+
Las acciones PDF usan iconos por defecto. Configura \`site.icons.PdfDownload\` (\`LuDownload\`) y \`site.icons.PdfOpenInNewTab\` (\`LuExternalLink\`) por separado con \`reactIcon\`, \`tag\`, \`size\`, \`colorDark\` y \`colorLight\`. Por ejemplo, \`"PdfDownload": { "reactIcon": false }\` muestra texto en descarga mientras la nueva pestaña conserva su icono. La apariencia no cambia las opciones de activación anteriores.
|
|
42
|
+
|
|
31
43
|
## Ejemplo de ruta y menú
|
|
32
44
|
|
|
33
|
-
En \`gitpagedocs/docs/versions/0.0.
|
|
45
|
+
En \`gitpagedocs/docs/versions/0.0.11/config.json\`, conserva las listas de rutas y menús en el nivel principal:
|
|
34
46
|
|
|
35
47
|
\`\`\`json
|
|
36
48
|
{
|
|
@@ -39,9 +51,9 @@ En \`gitpagedocs/docs/versions/0.0.9/config.json\`, conserva las listas de rutas
|
|
|
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 @@ Las opciones de la ruta se colocan dentro de \`pdf\`. La presentación compartid
|
|
|
65
77
|
|
|
66
78
|
Las rutas relativas a la raíz del repositorio que empiezan por \`gitpagedocs/\` se copian a los assets públicos del visor al iniciar o compilar Next.js. La URL respeta el subdirectorio de publicación de GitHub Pages. Incluye el PDF en Git y publícalo junto con la documentación generada. Los archivos fuera de \`gitpagedocs/\` deben estar en \`frontend/public/\` del visor o ser accesibles mediante una URL HTTP(S).
|
|
67
79
|
|
|
68
|
-
Usa la URL del PDF binario, no una página HTML de vista previa del repositorio. Para repositorios remotos, la ruta se resuelve dentro de ese repositorio.
|
|
80
|
+
Usa la URL del PDF binario, no una página HTML de vista previa del repositorio. Para repositorios remotos, la ruta se resuelve dentro de ese repositorio. La vista previa, la descarga y la apertura en una nueva pestaña obtienen los bytes del archivo, por lo que un servidor externo debe permitir CORS para las tres acciones. El visor valida la firma PDF y crea una URL Blob temporal de tipo \`application/pdf\`. La vista previa y la nueva pestaña utilizan el visor PDF nativo del navegador; la política de incorporación y las cabeceras de tipo/disposición del servidor de origen no controlan esta vista Blob.
|
|
69
81
|
|
|
70
|
-
El
|
|
82
|
+
El botón de nueva pestaña abre el Blob PDF validado en lugar de navegar a la URL raw del repositorio. También funciona con la vista previa desactivada: la carga comienza cuando el lector descarga o abre el documento. Los bytes cargados se reutilizan para el PDF actual. Los fallos de red/CORS, los PDFs inválidos y el bloqueo de nuevas pestañas muestran un error; no hay fallback automático a la URL raw. El soporte PDF nativo y las preferencias de descarga del navegador siguen determinando cómo se muestra el archivo en la nueva pestaña.
|
|
71
83
|
|
|
72
84
|
## Lectura y diagnóstico
|
|
73
85
|
|
|
@@ -75,19 +87,19 @@ El enlace de nueva pestaña abre directamente la URL original. Su comportamiento
|
|
|
75
87
|
- La vista previa no convierte PDF en Markdown. El modo foco, la navegación por secciones, la copia de Markdown y la narración actúan sobre documentos Markdown, no sobre el PDF incorporado.
|
|
76
88
|
- Desactivar la vista previa puede conservar la descarga y la nueva pestaña. Desactivar todas las acciones deja el PDF sin controles interactivos.
|
|
77
89
|
- Ocultar un botón no controla el acceso. Los PDFs alojados públicamente siguen disponibles mediante su URL. Los documentos confidenciales necesitan alojamiento protegido.
|
|
78
|
-
- Si la vista previa está vacía,
|
|
90
|
+
- Si la vista previa está vacía, confirma que la ruta devuelve un PDF y permite acceso mediante CORS; después prueba la nueva pestaña. Permite ventanas emergentes para el sitio si el navegador bloquea esa acción. Los fallos de descarga y apertura se muestran en la página.
|
|
79
91
|
`,
|
|
80
92
|
index: `# Git Page Docs
|
|
81
93
|
|
|
82
|
-
Git Page Docs es un runtime de
|
|
94
|
+
Git Page Docs es un runtime de documentación multilenguaje para repositorios que incluyen la carpeta \`gitpagedocs/\`.
|
|
83
95
|
|
|
84
|
-
##
|
|
96
|
+
## Qué ofrece este proyecto
|
|
85
97
|
|
|
86
98
|
- Renderizado markdown multilenguaje (\`en\`, \`pt\`, \`es\`)
|
|
87
|
-
- Ruteo por
|
|
99
|
+
- Ruteo por versión (\`/v/:version\`)
|
|
88
100
|
- Sistema de temas con templates JSON
|
|
89
|
-
-
|
|
90
|
-
-
|
|
101
|
+
- Ejecución local y en GitHub Pages
|
|
102
|
+
- Búsqueda de repositorio + render remoto opcional
|
|
91
103
|
|
|
92
104
|
## Contrato de carpetas
|
|
93
105
|
|
|
@@ -100,14 +112,14 @@ El runtime espera esta estructura:
|
|
|
100
112
|
- \`gitpagelayouts/layoutsConfig.json\`
|
|
101
113
|
- \`gitpagelayouts/templates/*.json\`
|
|
102
114
|
|
|
103
|
-
##
|
|
115
|
+
## Navegación rápida
|
|
104
116
|
|
|
105
117
|
- Abre **Primeros pasos** para setup local.
|
|
106
|
-
- Abre **
|
|
107
|
-
- Abre **
|
|
108
|
-
- Abre **Arquitectura** para mapa de
|
|
109
|
-
- Abre **Temas y layouts** para
|
|
110
|
-
- Abre **Rutas autorizadas** para configurar clave, roles y
|
|
118
|
+
- Abre **Configuración** para detalle completo de \`config.json\`.
|
|
119
|
+
- Abre **Publicación** para comportamiento local/producción/GitHub Pages.
|
|
120
|
+
- Abre **Arquitectura** para mapa de código y flujo de datos.
|
|
121
|
+
- Abre **Temas y layouts** para creación de templates.
|
|
122
|
+
- Abre **Rutas autorizadas** para configurar clave, roles y autenticación externa.
|
|
111
123
|
- Abre **FAQ** para troubleshooting.
|
|
112
124
|
|
|
113
125
|
## Referencias detalladas
|
|
@@ -115,9 +127,17 @@ El runtime espera esta estructura:
|
|
|
115
127
|
- **Referencia de la CLI**: instalación, todos los comandos y flags de compatibilidad.
|
|
116
128
|
- **Servidor MCP**: cliente, 20 tools, 7 resources y configuración de proveedores.
|
|
117
129
|
- **Navegación y submenús**: árboles recursivos, URLs y prioridad de breadcrumbs.
|
|
130
|
+
- **Bloques de contenido ordenados**: repite y ordena Markdown, HTML, vídeo, audio y PDF en una página; posiciona títulos y descripciones configurados de forma independiente.
|
|
118
131
|
- **Modo foco**: copiar/descargar Markdown y navegar por sección/documento.
|
|
119
132
|
- **Accesibilidad y narración**: voces del navegador, controles e interacción con medios.
|
|
120
133
|
- **Documentos PDF**: vista previa nativa, descarga/nueva pestaña y la guía incluida en inglés.
|
|
134
|
+
- **Recetas de configuración**: un sitio multilingüe completo y un menú con secciones dentro de secciones.
|
|
135
|
+
- **Migración y compatibilidad**: actualizar configuraciones desde la versión 0.0.1 conservando tu contenido.
|
|
136
|
+
- **Solución de problemas**: UTF-8, rutas locales y de Pages, carga de PDF, voces e inicio de MCP.
|
|
137
|
+
- **Contribución y validación**: archivos fuente, generación, contratos públicos y comprobaciónes de publicación.
|
|
138
|
+
- **Contenedores HTML**: páginas locales y externas, configuración de rutas/menús y el ejemplo interactivo DOOM.
|
|
139
|
+
|
|
140
|
+
El menú generado mantiene Primeros pasos y la descripción general del proyecto al principio. Guías contiene Configura tu sitio, Lee y explora y Automatiza e integra; cada categoría contiene sus páginas relacionadas. Operación y desarrollo agrupa publicación, mantenimiento y contribución. Git y GitHub contiene los ejemplos del repositorio. Las categorías pueden contener otras categorías sin un límite fijo de niveles.
|
|
121
141
|
`,
|
|
122
142
|
gettingStarted: `# Primeros pasos
|
|
123
143
|
|
|
@@ -167,35 +187,35 @@ El repositorio fija pnpm en \`packageManager\`. \`pnpm dev\` activa la búsqueda
|
|
|
167
187
|
|
|
168
188
|
Usa Configuración para idiomas, iconos, navegación, foco y narración; Funcionalidades para CLI y MCP; Temas y diseños para tokens visuales; Preguntas frecuentes para diagnóstico.
|
|
169
189
|
`,
|
|
170
|
-
projectOverview: `#
|
|
190
|
+
projectOverview: `# Visión general del proyecto
|
|
171
191
|
|
|
172
|
-
Git Page Docs es un monorepo pnpm + turborepo que convierte la carpeta \`gitpagedocs/\` de un repositorio en un sitio de
|
|
192
|
+
Git Page Docs es un monorepo pnpm + turborepo que convierte la carpeta \`gitpagedocs/\` de un repositorio en un sitio de documentación multilingüe y versionado — con un asistente de IA integrado y un servidor MCP (Model Context Protocol).
|
|
173
193
|
|
|
174
194
|
## Paquetes del monorepo
|
|
175
195
|
|
|
176
|
-
- **frontend/** — visor Next.js 15 (App Router, React 19), exportado
|
|
196
|
+
- **frontend/** — visor Next.js 15 (App Router, React 19), exportado estáticamente para GitHub Pages.
|
|
177
197
|
- **cli/** — el paquete npm publicado \`@gitpagedocs/cli\` (\`npm install -g @gitpagedocs/cli\`): genera la estructura de docs, documenta con IA, configura Pages y ejecuta el servidor MCP.
|
|
178
|
-
- **tools/** — \`@gitpagedocs/tools\`, el
|
|
198
|
+
- **tools/** — \`@gitpagedocs/tools\`, el núcleo de lógica compartido: sistema de IA con 14 proveedores, bóveda de credenciales cifrada, cargador de config, caches y logger.
|
|
179
199
|
- **mcp/** — \`@gitpagedocs/mcp\`, servidor Model Context Protocol (20 herramientas + 7 recursos).
|
|
180
200
|
- **gitpagedocs/** — el contrato del usuario: \`config.json\`, docs versionados y 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; exportación 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
|
## Destacados
|
|
189
209
|
|
|
190
|
-
-
|
|
191
|
-
- Sistema de IA con 14 proveedores (OpenAI, Anthropic, Gemini, Ollama, Mistral, DeepSeek, Cohere, Groq, xAI y
|
|
192
|
-
- Claves de IA **cifradas en reposo** (AES-256-GCM)
|
|
210
|
+
- Multilingüe (\`en\`, \`pt\`, \`es\`) y rutas por versión (\`/v/:version\`)
|
|
211
|
+
- Sistema de IA con 14 proveedores (OpenAI, Anthropic, Gemini, Ollama, Mistral, DeepSeek, Cohere, Groq, xAI y más) con streaming
|
|
212
|
+
- Claves de IA **cifradas en reposo** (AES-256-GCM) detrás de una contraseña local — nunca en texto plano
|
|
193
213
|
- **Panel de chat de IA** en los docs + una **consola \`/ai\`** dedicada
|
|
194
|
-
- Sistema de 64 temas (variantes oscuras y claras);
|
|
214
|
+
- Sistema de 64 temas (variantes oscuras y claras); ejecución local y en GitHub Pages
|
|
195
215
|
`,
|
|
196
216
|
functionalities: `# Funcionalidades
|
|
197
217
|
|
|
198
|
-
Referencia completa de opciones CLI, claves de
|
|
218
|
+
Referencia completa de opciones CLI, claves de configuración y funciones del runtime.
|
|
199
219
|
|
|
200
220
|
## Línea de comandos
|
|
201
221
|
|
|
@@ -203,23 +223,23 @@ Consulta **Referencia de la CLI** para comandos, flags, ejemplos y compatibilida
|
|
|
203
223
|
|
|
204
224
|
## Tipos de contenido
|
|
205
225
|
|
|
206
|
-
| Tipo | Clave config |
|
|
226
|
+
| Tipo | Clave config | Descripción |
|
|
207
227
|
|------|--------------|-------------|
|
|
208
228
|
| Markdown | \`routes-md\` | Archivos .md con \`path\` por idioma |
|
|
209
229
|
| HTML | \`routes-html\` | \`path\` local o \`url\` externa |
|
|
210
|
-
|
|
|
230
|
+
| Vídeo | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
|
|
211
231
|
| Audio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
|
|
212
232
|
| PDF | \`routes-pdf\` | \`pdf.pathPdf\` por idioma; vista previa nativa y descarga |
|
|
213
233
|
|
|
214
|
-
## Visor de
|
|
234
|
+
## Visor de código fuente
|
|
215
235
|
|
|
216
|
-
El config de
|
|
236
|
+
El config de versión puede renderizar un contenedor **Código fuente** vía \`routes-source-viewer\` y \`menus-header-source-viewer\`. El viewer lee el árbol del repositorio en GitHub en tiempo de ejecución y aplica el tema actual de la documentación.
|
|
217
237
|
|
|
218
|
-
-
|
|
219
|
-
-
|
|
238
|
+
- Árbol del repositorio desde \`source-viewer-path\`; la branch por defecto es \`main\`
|
|
239
|
+
- Navegación por carpetas y filtro de archivos
|
|
220
240
|
- Listado de directorios estilo GitHub
|
|
221
|
-
- Renderizado de
|
|
222
|
-
- Alternancia vista previa/
|
|
241
|
+
- Renderizado de código con números de línea
|
|
242
|
+
- Alternancia vista previa/código para Markdown, incluido \`README.md\`
|
|
223
243
|
- Carpetas colapsables en la barra lateral
|
|
224
244
|
|
|
225
245
|
## Claves de config (site)
|
|
@@ -229,92 +249,108 @@ El config de version puede renderizar un contenedor **Codigo fuente** via \`rout
|
|
|
229
249
|
- \`ProjectLink\`, \`layoutsConfigPathOficial\`, \`layoutsConfigPath\`
|
|
230
250
|
- Idiomas: \`site.languages\` (activa/desactiva cada uno); textos de la UI: \`gitpagedocs/langs/<lang>.json\`
|
|
231
251
|
|
|
232
|
-
##
|
|
252
|
+
## Reproducción de medios (un sonido a la vez)
|
|
233
253
|
|
|
234
|
-
\`site.mediaExclusivePlayback\` (por defecto \`true\`): reproducir un
|
|
254
|
+
\`site.mediaExclusivePlayback\` (por defecto \`true\`): reproducir un vídeo de ruta pausa la radio y las pistas de audio, y reproducir la radio o una pista de audio pausa el vídeo. Funciona con YouTube y Vimeo (mediante las APIs de sus reproductores), archivos nativos (\`mp4\`, \`webm\`, …) y cualquier otro embed.
|
|
235
255
|
|
|
236
|
-
Para mostrar un
|
|
256
|
+
Para mostrar un vídeo sin sonido mientras la radio o una pista de audio lo explica, usa \`"muted": true\` en el objeto \`video\` de la ruta: el vídeo reproduce solo la imagen y queda fuera de la regla. \`"mediaExclusivePlayback": false\` desactiva la regla en todo el sitio.
|
|
237
257
|
|
|
238
258
|
## Variables de entorno
|
|
239
259
|
|
|
240
|
-
- \`GITPAGEDOCS_REPOSITORY_SEARCH\` –
|
|
260
|
+
- \`GITPAGEDOCS_REPOSITORY_SEARCH\` – búsqueda de repositorio (local)
|
|
241
261
|
- \`GITHUB_ACTIONS\` – modo build GitHub Pages
|
|
242
262
|
|
|
243
263
|
## Asistente de IA
|
|
244
264
|
|
|
245
|
-
Los docs traen un asistente de IA en dos superficies: un **panel de chat** dentro de los docs (
|
|
265
|
+
Los docs traen un asistente de IA en dos superficies: un **panel de chat** dentro de los docs (botón de chat de IA en la barra lateral, activado por \`site.AiChatEnabled\`) y una página **consola \`/ai\`** dedicada.
|
|
246
266
|
|
|
247
|
-
- **14 proveedores** en un
|
|
248
|
-
- **
|
|
249
|
-
- **Cifrado en reposo** — tu clave de API se sella con AES-256-GCM
|
|
250
|
-
- **Bloqueo por inactividad** — el panel de chat se bloquea solo tras \`site.AiChatAutoLockSeconds\` segundos sin uso (por defecto 30, \`0\` lo desactiva): un modal centrado con cuenta regresiva, en tu idioma, permite cancelar o bloquear ahora, y desbloquear pide la
|
|
267
|
+
- **14 proveedores** en un único core compartido: OpenAI, Anthropic, Gemini, OpenRouter, Ollama, Azure OpenAI, Mistral, DeepSeek, Cohere, Groq, xAI, Together, Fireworks, Perplexity.
|
|
268
|
+
- **Elección de modelo** — desde el catálogo de cada proveedor (\`gitpagedocs models <proveedor>\`); un id de modelo guardado que el proveedor retiró se reemplaza por el predeterminado del proveedor automáticamente.
|
|
269
|
+
- **Cifrado en reposo** — tu clave de API se sella con AES-256-GCM detrás de una **contraseña local** y nunca queda en texto plano ni en logs.
|
|
270
|
+
- **Bloqueo por inactividad** — el panel de chat se bloquea solo tras \`site.AiChatAutoLockSeconds\` segundos sin uso (por defecto 30, \`0\` lo desactiva): un modal centrado con cuenta regresiva, en tu idioma, permite cancelar o bloquear ahora, y desbloquear pide la contraseña de nuevo.
|
|
251
271
|
- **Proveedores resilientes** — los errores transitorios del proveedor se reintentan (3 intentos) y un fallo final es un mensaje simple que termina en "¡Inténtalo de nuevo!".
|
|
252
|
-
- **
|
|
272
|
+
- **Generación de documentación con IA** — \`gitpagedocs ai\` recorre las rutas elegidas y escribe markdown multilingüe (pt/en/es); reutilizable vía \`.gitpagedocsconfig\`, cuya clave de API queda sellada en la bóveda cifrada \`.gitpagedocsvault\` (la contraseña de la bóveda se pide en cada ejecución). \`gitpagedocs chat\` lleva el mismo asistente a la terminal.
|
|
253
273
|
|
|
254
274
|
## Servidor MCP
|
|
255
275
|
|
|
256
|
-
\`gitpagedocs mcp start\` levanta un servidor Model Context Protocol (stdio) que expone **20 tools** (sistema de archivos, IA,
|
|
276
|
+
\`gitpagedocs mcp start\` levanta un servidor Model Context Protocol (stdio) que expone **20 tools** (sistema de archivos, IA, generación/análisis de docs) y **7 resources** (\`project://structure|docs|config|repository|readme|ai/providers|ai/models\`) para editores y agentes de IA.
|
|
257
277
|
`,
|
|
258
|
-
configuration: `#
|
|
278
|
+
configuration: `# Configuración
|
|
259
279
|
|
|
260
|
-
La
|
|
280
|
+
La configuración de runtime está en \`gitpagedocs/config.json\`. Los textos de la UI viven al lado, un archivo por idioma.
|
|
261
281
|
|
|
262
282
|
## Idiomas (\`site.languages\` + \`langs/\`)
|
|
263
283
|
|
|
264
|
-
- \`site.languages\` en \`gitpagedocs/config.json\` activa (\`true\`) o desactiva (\`false\`) cada idioma, en el orden del
|
|
265
|
-
- \`gitpagedocs/langs/<lang>.json\` guarda los textos de ese idioma: \`langmenu\` (cabecera,
|
|
284
|
+
- \`site.languages\` en \`gitpagedocs/config.json\` activa (\`true\`) o desactiva (\`false\`) cada idioma, en el orden del menú: \`{ "languages": { "en": true, "pt": true, "es": false } }\`. Un idioma en \`false\` desaparece del selector de idiomas y sus textos no se cargan, aunque existan sus docs.
|
|
285
|
+
- \`gitpagedocs/langs/<lang>.json\` guarda los textos de ese idioma: \`langmenu\` (cabecera, búsqueda, visor de código, reproductor de audio, chat de IA y acceso a los docs) y \`translations\` (\`notFound\`, \`navigation\`, \`footer\`).
|
|
266
286
|
- Para agregar un idioma, crea \`langs/<lang>.json\` y agrega \`"<lang>": true\` en \`site.languages\`.
|
|
267
|
-
- Los \`config.json\` antiguos que
|
|
287
|
+
- Los \`config.json\` antiguos que aún traen \`site.langmenu\` / \`translations\` inline siguen funcionando; cuando existen ambos, los archivos de \`langs/\` prevalecen y cualquier clave ausente se completa desde la versión actual.
|
|
268
288
|
|
|
269
|
-
##
|
|
289
|
+
## Sección \`site\`
|
|
270
290
|
|
|
271
291
|
Claves principales:
|
|
272
292
|
|
|
273
|
-
- \`name\`:
|
|
293
|
+
- \`name\`: título del proyecto en UI
|
|
274
294
|
- \`defaultLanguage\`: idioma por defecto
|
|
275
295
|
- \`HideThemeSelector\`: ocultar/mostrar selector de tema
|
|
276
296
|
- \`ThemeDefault\`: id del tema inicial
|
|
277
297
|
- \`ThemeModeDefault\`: modo inicial (\`light\` o \`dark\`)
|
|
278
298
|
- \`ProjectLink\`: URL de repositorio para acciones de cabecera
|
|
279
|
-
- \`docsVersion\`:
|
|
280
|
-
- \`ActiveNavigation\`: habilita
|
|
299
|
+
- \`docsVersion\`: versión seleccionada por defecto
|
|
300
|
+
- \`ActiveNavigation\`: habilita la navegación rápida y el atajo Ctrl+K
|
|
281
301
|
- \`FocusMode\`: habilita modo foco/lectura
|
|
282
302
|
- \`icons\`: iconos de la cabecera. \`icons.defaults\` guarda lo que todos comparten (\`reactIcon\`, \`colorDark\`, \`colorLight\`, \`size\`, \`imgDark\`, \`imgLight\`, \`imgWidth\`, \`imgHeight\`) y cada icono define su \`tag\` y lo que cambia (\`null\` quita un campo). Las claves planas de abajo siguen valiendo y ganan cuando existen ambas formas.
|
|
283
|
-
- \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`:
|
|
303
|
+
- \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamaño del icono principal
|
|
284
304
|
- \`IconImageMenuHeaderLightImg\`, \`IconImageMenuHeaderDarkImg\`: icono principal (light/dark)
|
|
285
|
-
- \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`:
|
|
305
|
+
- \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamaño del icono enlace del proyecto
|
|
286
306
|
- \`IconProjectLinkLightImg\`, \`IconProjectLinkDarkImg\`: icono enlace del proyecto
|
|
287
|
-
- \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`:
|
|
288
|
-
- \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: icono enlaces de
|
|
289
|
-
- \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`:
|
|
307
|
+
- \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamaño del icono enlaces de versión
|
|
308
|
+
- \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: icono enlaces de versión
|
|
309
|
+
- \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamaño del icono info
|
|
290
310
|
- \`IconInfoHeaderMenuLightImg\`, \`IconInfoHeaderMenuDarkImg\`: icono info
|
|
291
|
-
- \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`:
|
|
311
|
+
- \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamaño del icono preview
|
|
292
312
|
- \`IconPreviewProjectLinkLightImg\`, \`IconPreviewProjectLinkDarkImg\`: icono preview
|
|
293
313
|
- \`layoutsConfigPath\`: fallback remoto de layouts
|
|
294
|
-
- \`rendering\`: URL
|
|
314
|
+
- \`rendering\`: URL canónica publicada
|
|
295
315
|
|
|
296
|
-
## Controles de idioma, tema y
|
|
316
|
+
## Controles de idioma, tema, foco, navegación rápida, PDF y documentos
|
|
297
317
|
|
|
298
|
-
En \`gitpagedocs/config.json\`,
|
|
318
|
+
En \`gitpagedocs/config.json\`, estas entradas de \`site.icons\` configuran idioma, tema, foco, navegación Ctrl+K, acciones PDF y navegación al pie de los documentos. Los ocho controles utilizan React Icons por defecto:
|
|
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 @@ En \`gitpagedocs/config.json\`, agrega estas entradas a \`site.icons\` para usar
|
|
|
322
358
|
}
|
|
323
359
|
\`\`\`
|
|
324
360
|
|
|
325
|
-
Cada control es independiente: \`reactIcon:
|
|
361
|
+
Cada control es independiente: \`reactIcon: true\` muestra el icono (por defecto); \`false\` muestra texto. Personaliza \`tag\`, \`size\`, \`colorDark\` y \`colorLight\` por control; \`currentColor\` sigue el tema activo. Los controles con iconos conservan sus nombres accesibles, y los selectores conservan sus menús. El atajo Ctrl+K sigue disponible. \`site.FocusMode\` habilita el modo foco; \`site.icons.FocusMode\` solo cambia la apariencia del botón. \`site.icons.PdfDownload\` y \`site.icons.PdfOpenInNewTab\` seleccionan texto o iconos independientemente; las opciones correspondientes de \`site.pdf\` y del \`pdf\` de la ruta controlan la disponibilidad de cada acción.
|
|
362
|
+
|
|
363
|
+
Las configuraciones compactas pueden mover valores comunes a \`site.icons.defaults\`; los campos omitidos heredan esos valores. Define \`reactIcon: false\` en una entrada concreta para sustituir el icono predeterminado por texto.
|
|
326
364
|
|
|
327
|
-
##
|
|
365
|
+
## Sección \`VersionControl\`
|
|
328
366
|
|
|
329
367
|
\`VersionControl.versions\` define:
|
|
330
368
|
|
|
331
|
-
- \`id\`: identificador de
|
|
332
|
-
- \`path\`: ruta de config de
|
|
369
|
+
- \`id\`: identificador de versión
|
|
370
|
+
- \`path\`: ruta de config de versión
|
|
333
371
|
- links opcionales (\`ProjectLink\`, \`branch\`, \`release\`, \`commit\`)
|
|
334
372
|
- metadatos opcionales del source viewer (\`source-viewer\`, \`source-viewer-path\`)
|
|
335
373
|
|
|
336
|
-
##
|
|
374
|
+
## Navegación y rutas
|
|
337
375
|
|
|
338
376
|
- \`routes\`: rutas markdown por idioma (legado)
|
|
339
|
-
- \`menus-header\`:
|
|
340
|
-
- \`translations\`: etiquetas UI para not-found y
|
|
377
|
+
- \`menus-header\`: menú jerarquico
|
|
378
|
+
- \`translations\`: etiquetas UI para not-found y navegación
|
|
341
379
|
|
|
342
|
-
##
|
|
380
|
+
## Autorización (config de versión)
|
|
343
381
|
|
|
344
|
-
- \`auth\`: configuraciones globales de
|
|
382
|
+
- \`auth\`: configuraciones globales de autorización para esa versión
|
|
345
383
|
- \`auth.accessKeys\`: mapa de claves usado por \`authorization.accessKeyId\`
|
|
346
384
|
- \`auth.rolesStorageKey\`: clave de localStorage para bootstrap de roles
|
|
347
385
|
- \`auth.providers\`: adaptadores de proveedor (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
|
|
348
386
|
|
|
349
|
-
## Tipos de contenido (config de
|
|
387
|
+
## Tipos de contenido (config de versión)
|
|
350
388
|
|
|
351
|
-
Los configs de
|
|
389
|
+
Los configs de versión soportan múltiples tipos:
|
|
352
390
|
|
|
353
|
-
- \`routes-md\`: Rutas markdown con \`title\`, \`description\` (centrados
|
|
354
|
-
- \`routes-source-viewer\`: Contenedores de
|
|
355
|
-
- \`routes-html\`: Rutas de
|
|
356
|
-
- \`routes-video\`: Config de
|
|
391
|
+
- \`routes-md\`: Rutas markdown con \`title\`, \`description\` (centrados vía \`titlePosition\`, \`descriptionPosition\`)
|
|
392
|
+
- \`routes-source-viewer\`: Contenedores de código fuente con \`source-viewer: true\` y \`source-viewer-path\`
|
|
393
|
+
- \`routes-html\`: Rutas de páginas HTML por idioma
|
|
394
|
+
- \`routes-video\`: Config de vídeo con \`video.videoType\` (youtube, vimeo, mp4, etc.) y \`video.pathVideo\`
|
|
357
395
|
- \`routes-audio\`: Config de audio con \`audio.audioType\` (youtube, mp3, etc.) y \`audio.pathAudio\`
|
|
358
396
|
- \`routes-pdf\`: PDF con \`pdf.pathPdf\` por idioma; consulta Documentos PDF.
|
|
359
|
-
- \`authorization\` (md/html/
|
|
360
|
-
- \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`, \`menus-header-pdf\`:
|
|
361
|
-
- \`hierarchyPage\`: orden de contenedores en la
|
|
362
|
-
- \`hierarchyMenu\`: orden de secciones del
|
|
397
|
+
- \`authorization\` (md/html/vídeo): guardia de acceso por clave, roles y autenticación externa
|
|
398
|
+
- \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`, \`menus-header-pdf\`: menús por tipo
|
|
399
|
+
- \`hierarchyPage\`: orden de contenedores en la página \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
|
|
400
|
+
- \`hierarchyMenu\`: orden de secciones del menú \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
|
|
363
401
|
|
|
364
402
|
Cada ruta puede incluir \`title\`, \`description\` (por idioma), \`titleCss\`, \`titlePosition: "center"\`, \`descriptionPosition: "center"\`, \`titleIsVisible\`, \`descriptionIsVisible\`.
|
|
365
403
|
|
|
366
|
-
Los ajustes que comparten todas las rutas se escriben una sola vez en \`routeDefaults\`, al inicio del config de la
|
|
404
|
+
Los ajustes que comparten todas las rutas se escriben una sola vez en \`routeDefaults\`, al inicio del config de la versión; cada ruta guarda solo sus propios valores, y un valor escrito en la ruta gana sobre \`routeDefaults\`.
|
|
367
405
|
|
|
368
406
|
## Variables por ruta (blockLink, container, url, browseAll)
|
|
369
407
|
|
|
370
408
|
Opciones por ruta en \`routes-md\`, \`routes-html\` y \`routes-video\`:
|
|
371
409
|
|
|
372
410
|
- **\`blockLink\`** (defecto: true) – Para HTML: si true, los enlaces abren en nueva pestaña (\`target="_blank"\`); si false, en el mismo contexto.
|
|
373
|
-
- **\`container\`** – \`"full"\` = altura
|
|
374
|
-
- **\`url\`** – Solo en \`routes-html\`: \`Record<LanguageCode, string>\` con URLs externas. Al definirse, el iframe usa \`src={url}\` en vez de HTML local
|
|
411
|
+
- **\`container\`** – \`"full"\` = altura automática; numero (ej: \`500\`) = altura fija en px con overflow auto. Se aplica a md, html y vídeo.
|
|
412
|
+
- **\`url\`** – Solo en \`routes-html\`: \`Record<LanguageCode, string>\` con URLs externas. Al definirse, el iframe usa \`src={url}\` en vez de HTML local vía \`srcDoc\`. Las rutas con \`url\` no generan archivos HTML locales.
|
|
375
413
|
- **\`browseAll\`** (defecto: false) – Si true, el contenedor muestra botones Anterior/Siguiente para navegar entre todos los items de ese tipo.
|
|
376
414
|
|
|
377
415
|
## Tipos de contenido: path vs url (HTML)
|
|
378
416
|
|
|
379
417
|
- **Markdown (\`routes-md\`)**: usa \`path\` apuntando a archivos \`.md\` locales.
|
|
380
|
-
- **HTML (\`routes-html\`)**: usa \`path\` para archivos HTML locales (sin
|
|
381
|
-
- **
|
|
418
|
+
- **HTML (\`routes-html\`)**: usa \`path\` para archivos HTML locales (sin extensión .html en config) o \`url\` para URLs externas. Con \`url\`, el iframe carga la página externa; no se genera archivo local.
|
|
419
|
+
- **Vídeo (\`routes-video\`)**: usa \`video.pathVideo\` y \`video.videoType\` (youtube, vimeo, mp4, etc.).
|
|
382
420
|
|
|
383
421
|
## Variables de entorno
|
|
384
422
|
|
|
385
|
-
- \`GITPAGEDOCS_REPOSITORY_SEARCH\`: activa/desactiva
|
|
386
|
-
- \`GITHUB_ACTIONS\`: habilita comportamiento
|
|
423
|
+
- \`GITPAGEDOCS_REPOSITORY_SEARCH\`: activa/desactiva búsqueda remota en local
|
|
424
|
+
- \`GITHUB_ACTIONS\`: habilita comportamiento específico de GitHub Pages
|
|
387
425
|
|
|
388
426
|
## Comportamiento del sitio y valores predeterminados
|
|
389
427
|
|
|
390
428
|
| Clave | Valor / finalidad |
|
|
391
429
|
| --- | --- |
|
|
392
|
-
| \`ActiveNavigation\` | true;
|
|
430
|
+
| \`ActiveNavigation\` | true; navegación rápida y atajo Ctrl+K |
|
|
393
431
|
| \`FocusMode / focusMode\` | Activación general (true) y controles independientes de copia, descarga, sección y documento; consulta Modo foco |
|
|
394
432
|
| \`pdf\` | Activación general, vista previa, descarga y nueva pestaña; todos true |
|
|
395
433
|
| \`nestedMenusEnabled\` | true; árbol recursivo, o destinos planos con false |
|
|
@@ -423,7 +461,7 @@ La entrada \`QuickNavigation\` controla la apariencia de icono/texto del botón
|
|
|
423
461
|
`,
|
|
424
462
|
deployment: `# Publicación
|
|
425
463
|
|
|
426
|
-
Elige el visor oficial para un repositorio público,
|
|
464
|
+
Elige el visor oficial para un repositorio público, pública tu propio GitHub Pages o aloja un export estático compilado desde el runtime.
|
|
427
465
|
|
|
428
466
|
## Visor oficial
|
|
429
467
|
|
|
@@ -459,36 +497,36 @@ En un checkout del runtime con dependencias instaladas, \`node cli/index.mjs --h
|
|
|
459
497
|
|
|
460
498
|
## Releases npm para mantenedores
|
|
461
499
|
|
|
462
|
-
El monorepo
|
|
500
|
+
El monorepo pública \`@gitpagedocs/tools\`, \`@gitpagedocs/mcp\` y \`@gitpagedocs/cli\`; raíz y frontend son privados. El \`npm-publish.yml\` actual se ejecuta en pushes a \`main\` y omite una versión de CLI ya publicada. Utiliza el secret \`NPM_TOKEN\` del repositorio y pública workspaces en orden de dependencia. Crear solo una release de GitHub no es su disparador.
|
|
463
501
|
|
|
464
502
|
Sincroniza versiones y dependencias internas, regenera docs/baselines, ejecuta typecheck, lint, pruebas, smoke, build y Playwright y revisa antes del push. Confirma las tres versiones en npm y el resultado de Pages. La CLI de configuración ignora \`prebuilt/\`; el workflow de publicación no requiere esa carpeta.
|
|
465
503
|
`,
|
|
466
504
|
architecture: `# Arquitectura
|
|
467
505
|
|
|
468
|
-
El proyecto
|
|
506
|
+
El proyecto está organizado por fronteras de feature y responsabilidades de runtime.
|
|
469
507
|
|
|
470
508
|
## Paquetes
|
|
471
509
|
|
|
472
510
|
- **frontend/** — visor Next.js (Feature-Sliced: app / widgets / features / entities / shared); export estatico.
|
|
473
|
-
- **cli/** — el bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de
|
|
511
|
+
- **cli/** — el bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de documentación con IA).
|
|
474
512
|
- **tools/** — \`@gitpagedocs/tools\`: ai/ security/ crypto/ cache/ config/ logger/ errors/ filesystem/ documentation/ i18n/ ports/.
|
|
475
513
|
- **mcp/** — \`@gitpagedocs/mcp\`: herramientas + recursos MCP que delegan a tools/.
|
|
476
514
|
|
|
477
515
|
## Modulos principales (frontend)
|
|
478
516
|
|
|
479
|
-
- \`frontend/src/app/[[...repo]]/page.tsx\` — parser de rutas, 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 rutas, generateStaticParams, selección de shell.
|
|
518
|
+
- \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota, versión, parse markdown, layouts + temas.
|
|
519
|
+
- \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/versión/tema, sync de URL, montaje del chat de IA.
|
|
482
520
|
|
|
483
521
|
## Seguridad: credenciales de IA cifradas
|
|
484
522
|
|
|
485
|
-
La consola \`/ai\` y el panel de chat exigen una
|
|
523
|
+
La consola \`/ai\` y el panel de chat exigen una contraseña local que deriva (PBKDF2) una clave AES-256-GCM; las claves quedan cifradas en \`localStorage\` y solo se descifran durante la sesión (\`@gitpagedocs/tools/security\`). El panel se bloquea solo tras \`site.AiChatAutoLockSeconds\` segundos sin uso (por defecto 30; \`0\` lo desactiva): un modal centrado con cuenta regresiva, en el idioma seleccionado, permite cancelar o bloquear ahora, y volver exige la contraseña de nuevo. En la CLI, la clave de \`.gitpagedocsconfig\` queda sellada en la bóveda cifrada \`.gitpagedocsvault\` y la contraseña de la bóveda se pide en cada ejecución.
|
|
486
524
|
|
|
487
525
|
## Flujo de datos
|
|
488
526
|
|
|
489
527
|
1. Llega la ruta (\`/owner/repo/v/x.y.z\` o equivalente local)
|
|
490
528
|
2. Se resuelve config (local o remoto)
|
|
491
|
-
3. Config de
|
|
529
|
+
3. Config de versión sobreescribe rutas/menús base
|
|
492
530
|
4. Markdown se carga y convierte a HTML
|
|
493
531
|
5. Template de layout se resuelve y aplica en CSS vars
|
|
494
532
|
6. Shell renderiza contenido y controles
|
|
@@ -497,7 +535,7 @@ La consola \`/ai\` y el panel de chat exigen una contrasena local que deriva (PB
|
|
|
497
535
|
|
|
498
536
|
- fallback de carga para layouts/templates
|
|
499
537
|
- carga de markdown por idioma con fallback de error
|
|
500
|
-
-
|
|
538
|
+
- sincronización de idioma/versión/tema vía localStorage
|
|
501
539
|
`,
|
|
502
540
|
githubIssuesProjects: `# GitHub Issues y Projects
|
|
503
541
|
|
|
@@ -524,21 +562,21 @@ Conceptos basicos de Git para principiantes.
|
|
|
524
562
|
|
|
525
563
|
Protege rutas por clave de acceso, roles requeridos y proveedores externos.
|
|
526
564
|
|
|
527
|
-
## Ubicacion del config de
|
|
565
|
+
## Ubicacion del config de versión
|
|
528
566
|
|
|
529
567
|
Configura en:
|
|
530
568
|
|
|
531
569
|
- \`gitpagedocs/docs/versions/<version>/config.json\`
|
|
532
570
|
|
|
533
|
-
##
|
|
571
|
+
## Sección global auth
|
|
534
572
|
|
|
535
|
-
Usa \`auth\` en la raiz del config de
|
|
573
|
+
Usa \`auth\` en la raiz del config de versión:
|
|
536
574
|
|
|
537
575
|
- \`accessKeys\`: mapa de ids de clave al secreto esperado
|
|
538
576
|
- \`rolesStorageKey\`: clave de localStorage para bootstrap de roles
|
|
539
577
|
- \`providers\`: lista de proveedores externos (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
|
|
540
578
|
|
|
541
|
-
##
|
|
579
|
+
## Autorización por ruta
|
|
542
580
|
|
|
543
581
|
Dentro de cada ruta (\`routes-md\`, \`routes-html\`, \`routes-video\`):
|
|
544
582
|
|
|
@@ -555,7 +593,7 @@ Define \`authorization.accessKeyId\` y la clave correspondiente en \`auth.access
|
|
|
555
593
|
|
|
556
594
|
### Fase B - Roles
|
|
557
595
|
|
|
558
|
-
Define \`authorization.requiredRoles\` con uno o
|
|
596
|
+
Define \`authorization.requiredRoles\` con uno o más roles.
|
|
559
597
|
|
|
560
598
|
Los roles pueden venir de:
|
|
561
599
|
|
|
@@ -597,7 +635,7 @@ Cada template normalmente incluye:
|
|
|
597
635
|
|
|
598
636
|
## Comportamiento en runtime
|
|
599
637
|
|
|
600
|
-
- tema activo viene de config/
|
|
638
|
+
- tema activo viene de config/selección de usuario
|
|
601
639
|
- toggle light/dark resuelve tema pareado por referencia
|
|
602
640
|
- variables CSS se generan desde tokens del template
|
|
603
641
|
|
|
@@ -740,7 +778,7 @@ La generación envía el contenido seleccionado del proyecto al proveedor config
|
|
|
740
778
|
|
|
741
779
|
## Comandos CLI
|
|
742
780
|
|
|
743
|
-
| Comando |
|
|
781
|
+
| Comando | Descripción |
|
|
744
782
|
|---------|-------------|
|
|
745
783
|
| \`npx @gitpagedocs/cli\` | Genera config y docs en \`gitpagedocs/\` |
|
|
746
784
|
| \`npx @gitpagedocs/cli --layoutconfig\` | Tambien genera layouts/templates locales en \`gitpagelayouts/\` |
|
|
@@ -748,28 +786,28 @@ La generación envía el contenido seleccionado del proyecto al proveedor config
|
|
|
748
786
|
| \`npx @gitpagedocs/cli --push --owner X --repo Y\` | Configura workflow, commit, push |
|
|
749
787
|
| \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interactivo con prompts (por defecto en una terminal) |
|
|
750
788
|
| \`npx @gitpagedocs/cli --no-interactive\` / \`--yes\` / \`-y\` | Nunca pregunta; usa flags y valores por defecto |
|
|
751
|
-
| \`gitpagedocs ai\` | Generador interactivo de
|
|
752
|
-
| \`gitpagedocs chat [pregunta]\` | Chat de IA con streaming en la terminal (REPL en TTY; respuesta
|
|
753
|
-
| \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista proveedores de IA / modelos del
|
|
754
|
-
| \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Genera
|
|
755
|
-
| \`gitpagedocs deploy\` / \`pages [actions\\|deploy]\` | Configura GitHub Pages
|
|
789
|
+
| \`gitpagedocs ai\` | Generador interactivo de documentación con IA |
|
|
790
|
+
| \`gitpagedocs chat [pregunta]\` | Chat de IA con streaming en la terminal (REPL en TTY; respuesta única con pregunta o stdin) |
|
|
791
|
+
| \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista proveedores de IA / modelos del catálogo |
|
|
792
|
+
| \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Genera documentación con IA |
|
|
793
|
+
| \`gitpagedocs deploy\` / \`pages [actions\\|deploy]\` | Configura GitHub Pages vía Actions + push |
|
|
756
794
|
| \`gitpagedocs docs\` | Actualiza las regiones gestionadas de README/CONTRIBUTING/SECURITY |
|
|
757
|
-
| \`gitpagedocs password\` | Define la
|
|
758
|
-
| \`gitpagedocs config\` / \`config clear\` | Muestra la config resuelta / borra la config guardada y la
|
|
759
|
-
| \`gitpagedocs doctor\` / \`version\` / \`update\` |
|
|
795
|
+
| \`gitpagedocs password\` | Define la contraseña de acceso a la documentación (clave pública en \`site.docsAccess\`) |
|
|
796
|
+
| \`gitpagedocs config\` / \`config clear\` | Muestra la config resuelta / borra la config guardada y la bóveda de claves |
|
|
797
|
+
| \`gitpagedocs doctor\` / \`version\` / \`update\` | Diagnóstico / versión / comprobación de actualización en el registro |
|
|
760
798
|
| \`gitpagedocs mcp start\` | Inicia el servidor MCP por stdio |
|
|
761
799
|
|
|
762
800
|
Instala globalmente con \`npm install -g @gitpagedocs/cli\` o ejecuta sin instalar con \`npx @gitpagedocs/cli\`.
|
|
763
801
|
|
|
764
802
|
## Opciones CLI
|
|
765
803
|
|
|
766
|
-
| Opcion |
|
|
804
|
+
| Opcion | Descripción |
|
|
767
805
|
|--------|-------------|
|
|
768
806
|
| \`--owner <user>\` | Owner de GitHub |
|
|
769
807
|
| \`--repo <repo>\` | Repositorio GitHub |
|
|
770
808
|
| \`--path <subpath>\` | Subruta de docs (ej: \`docs\`); sin ella, base path = nombre del repo para CSS/JS en project sites |
|
|
771
809
|
| \`--output <dir>\` | Directorio de salida (default: \`gitpagedocs\`) |
|
|
772
|
-
| \`--search <true-or-false>\` | Habilita/deshabilita
|
|
810
|
+
| \`--search <true-or-false>\` | Habilita/deshabilita búsqueda de repositorio (\`--home\`) |
|
|
773
811
|
| \`--layoutconfig\` | Genera layouts locales en \`gitpagelayouts/\` |
|
|
774
812
|
| \`--layouts-dir <dir>\` | Carpeta de layouts locales (por defecto: \`gitpagelayouts\`) |
|
|
775
813
|
| \`--push\` | Crea workflow, commit de artefactos, push |
|
|
@@ -780,7 +818,7 @@ Instala globalmente con \`npm install -g @gitpagedocs/cli\` o ejecuta sin instal
|
|
|
780
818
|
|
|
781
819
|
- \`gitpagedocs/config.json\` – config raiz
|
|
782
820
|
- \`gitpagedocs/icon.svg\` – icono por defecto
|
|
783
|
-
- \`gitpagedocs/docs/versions/<ver>/config.json\` – rutas por
|
|
821
|
+
- \`gitpagedocs/docs/versions/<ver>/config.json\` – rutas por versión
|
|
784
822
|
- \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs en markdown
|
|
785
823
|
- \`gitpagelayouts/\` – solo con \`--layoutconfig\` (carpeta configurable con \`--layouts-dir\`)
|
|
786
824
|
|
|
@@ -825,7 +863,7 @@ Las rutas definen el contenido; los menús definen cómo encontrarlo. Configúra
|
|
|
825
863
|
|
|
826
864
|
Cada entrada de \`menus-header-md\` tiene \`id\` y objetos \`pt\`, \`en\`, \`es\` con \`title\` y \`path-click\` opcional. Añade \`submenus\` con nuevas entradas para anidar el árbol. El objeto de un idioma también acepta \`submenus\` localizados con título/ruta. Utiliza una forma de manera consistente para no listar el mismo hijo dos veces.
|
|
827
865
|
|
|
828
|
-
Los grupos sin \`path-click\` organizan sus hijos. Para
|
|
866
|
+
Los grupos sin \`path-click\` organizan sus hijos. Para el destino de una ruta Markdown, utiliza su ruta localizada real de \`routes-md[].path\`. Las rutas source-viewer, vídeo, audio, PDF y las composiciones explícitas de \`pages\` registran \`page:<id>\`; una ruta Markdown simple utiliza la ruta del archivo. El ejemplo utiliza la versión \`0.0.8\`: sustituye ese segmento por la versión editada y crea los tres archivos chapter.
|
|
829
867
|
|
|
830
868
|
\`\`\`json
|
|
831
869
|
{
|
|
@@ -893,6 +931,14 @@ Los grupos sin \`path-click\` organizan sus hijos. Para un destino Markdown, uti
|
|
|
893
931
|
|
|
894
932
|
## Comportamiento del anidamiento
|
|
895
933
|
|
|
934
|
+
Un padre puede ser documento y grupo a la vez. Conserva su \`path-click\` localizado junto con \`submenus\`: el título abre su página Markdown y la flecha separada expande o contrae los hijos. El scaffold incluye resúmenes útiles para los ocho grupos padres. Los antecesores de los breadcrumbs enlazan a esos documentos; el destino actual sigue marcado como actual. Un grupo sin ruta puede organizar hijos, pero no tiene un destino para abrir.
|
|
935
|
+
|
|
936
|
+
El siguiente fragmento utiliza las rutas Markdown 31, 32 y 13 incluidas en el scaffold. Combínalo con \`menus-header-md\` y conserva las definiciones correspondientes en \`routes-md\` y sus archivos:
|
|
937
|
+
|
|
938
|
+
\`\`\`json
|
|
939
|
+
${PARENT_MENU_JSON}
|
|
940
|
+
\`\`\`
|
|
941
|
+
|
|
896
942
|
\`site.nestedMenusEnabled: true\` muestra menús recursivos expandibles. Puedes añadir \`submenus\` en cualquier nodo: no existe un límite fijo de profundidad en la aplicación. La configuración debe ser finita y adecuada para la memoria del navegador y la usabilidad. Con \`false\`, los destinos aparecen en una lista plana; las páginas anidadas no se eliminan.
|
|
897
943
|
|
|
898
944
|
El árbol sirve para navegación lateral, etiquetas de búsqueda, expansión de padres y rutas de navegación. Mantén IDs estables y sin ambigüedad; los destinos protegidos siguen las reglas de autorización de su página. La misma estructura se aplica a \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\` y \`menus-header-pdf\`. \`hierarchyMenu\` ordena las secciones por tipo; \`hierarchyPage\` ordena los contenedores que comparten el ID de página.
|
|
@@ -905,7 +951,9 @@ El árbol sirve para navegación lateral, etiquetas de búsqueda, expansión de
|
|
|
905
951
|
|
|
906
952
|
## URLs y anterior/siguiente
|
|
907
953
|
|
|
908
|
-
Las URLs versionadas utilizan \`/v/<version>/\`; \`?lang=pt\` elige el idioma y \`?id=101\` elige la página. \`?name=chapter\` selecciona el slug del documento. Mantén \`VersionControl.versions[].path\` apuntando al config de la versión correspondiente. \`site.ActiveNavigation\` activa anterior/siguiente
|
|
954
|
+
Las URLs versionadas utilizan \`/v/<version>/\`; \`?lang=pt\` elige el idioma y \`?id=101\` elige la página. \`?name=chapter\` selecciona el slug del documento. Mantén \`VersionControl.versions[].path\` apuntando al config de la versión correspondiente. \`site.ActiveNavigation\` activa la navegación rápida y su atajo Ctrl+K. Los controles anterior/siguiente del pie siguen los destinos disponibles en el menú; la navegación entre documentos en modo foco tiene su propia opción. Consulta Modo foco para controles de sección y documento.
|
|
955
|
+
|
|
956
|
+
Los botones anterior/siguiente del pie usan \`site.icons.DocumentPrevious\` (\`LuChevronLeft\`) y \`site.icons.DocumentNext\` (\`LuChevronRight\`) por defecto. Define \`reactIcon: false\` en cualquier entrada para mostrar su texto traducido; cada entrada también acepta \`tag\`, \`size\`, \`colorDark\` y \`colorLight\`. La apariencia no cambia la navegación: el pie aparece cuando hay más de un destino disponible en el menú, y la dirección no disponible permanece desactivada en los extremos.
|
|
909
957
|
|
|
910
958
|
Prueba un menú nuevo desde la barra lateral, por URL directa y en cada idioma habilitado; confirma que el destino existe y está permitido para el lector actual.
|
|
911
959
|
`,
|
|
@@ -931,18 +979,21 @@ Combina este fragmento con \`gitpagedocs/config.json\`:
|
|
|
931
979
|
}
|
|
932
980
|
\`\`\`
|
|
933
981
|
|
|
934
|
-
Cada opción tiene valor predeterminado \`true\`; \`false\` oculta
|
|
982
|
+
Cada opción tiene valor predeterminado \`true\`; \`false\` oculta la acción o el grupo de navegación correspondiente. Con \`sectionNavigationEnabled: false\`, el modo foco muestra el documento completo sin paginación por secciones. Las configuraciones existentes sin el nuevo objeto \`focusMode\` mantienen los controles activados.
|
|
935
983
|
|
|
936
984
|
## Secciones y documentos
|
|
937
985
|
|
|
938
|
-
-
|
|
939
|
-
-
|
|
986
|
+
- La navegación por secciones tiene cuatro botones: primera sección, sección anterior, sección siguiente y última sección del documento actual.
|
|
987
|
+
- La navegación por documentos tiene cuatro botones: primer documento, documento anterior, documento siguiente y último documento en el orden del menú, incluidos los submenús.
|
|
988
|
+
- \`sectionNavigationEnabled\` controla los cuatro botones de sección; \`documentNavigationEnabled\` controla los cuatro botones de documento. Las direcciones no disponibles quedan desactivadas en los extremos.
|
|
940
989
|
- Se omiten documentos sin traducción en el idioma activo, destinos que no son Markdown y páginas sin permiso.
|
|
941
990
|
- Cambiar de documento mantiene abierto el diálogo y vuelve a la primera sección. Los contadores de sección/documento muestran la posición actual.
|
|
942
|
-
- \`site.ActiveNavigation\` controla la navegación
|
|
991
|
+
- \`site.ActiveNavigation\` controla la navegación rápida; no desactiva la navegación de documentos en modo foco.
|
|
943
992
|
|
|
944
993
|
## Copiar y descargar
|
|
945
994
|
|
|
995
|
+
En una página compuesta, foco lee los bloques Markdown autorizados en orden, incluidas las repeticiones. Copiar/descargar une esas fuentes y utiliza \`page-<id>.md\`; las acciones individuales de los bloques conservan sus nombres originales. Consulta Bloques de contenido ordenados para el contrato completo.
|
|
996
|
+
|
|
946
997
|
Copiar y descargar utilizan el **Markdown original completo en el idioma seleccionado**, incluidas las secciones que no están visibles. No exportan el HTML renderizado ni solo la sección actual.
|
|
947
998
|
|
|
948
999
|
La descarga conserva el nombre base Markdown del \`path\` localizado de la ruta; si no está disponible, el nombre del archivo es \`document.md\`. El portapapeles sigue las reglas de permisos y contexto seguro del navegador. Si la copia falla, utiliza la descarga y consulta el error mostrado.
|
|
@@ -1014,7 +1065,7 @@ Consulta la [referencia de Web Speech API](https://developer.mozilla.org/en-US/d
|
|
|
1014
1065
|
`,
|
|
1015
1066
|
faq: `# FAQ
|
|
1016
1067
|
|
|
1017
|
-
## Por
|
|
1068
|
+
## ¿Por qué repositorios remotos no abren en local?
|
|
1018
1069
|
|
|
1019
1070
|
Verifica:
|
|
1020
1071
|
|
|
@@ -1022,29 +1073,29 @@ Verifica:
|
|
|
1022
1073
|
- repositorio objetivo contiene \`gitpagedocs/config.json\`
|
|
1023
1074
|
- paths markdown del repositorio coinciden con su config de rutas
|
|
1024
1075
|
|
|
1025
|
-
## Por
|
|
1076
|
+
## ¿Por qué una ruta de versión muestra contenido incorrecto?
|
|
1026
1077
|
|
|
1027
1078
|
Verifica:
|
|
1028
1079
|
|
|
1029
1080
|
- \`VersionControl.versions[*].path\` en \`gitpagedocs/config.json\`
|
|
1030
|
-
- config de
|
|
1081
|
+
- config de versión tiene \`routes\` y \`menus-header\` válidos
|
|
1031
1082
|
- markdown existe para cada idioma
|
|
1032
1083
|
|
|
1033
|
-
## Por
|
|
1084
|
+
## ¿Por qué tema no se aplica correctamente?
|
|
1034
1085
|
|
|
1035
1086
|
Verifica:
|
|
1036
1087
|
|
|
1037
|
-
- \`layoutsConfig.json\` referencia templates
|
|
1038
|
-
- ids de template son
|
|
1088
|
+
- \`layoutsConfig.json\` referencia templates válidos
|
|
1089
|
+
- ids de template son únicos
|
|
1039
1090
|
- tema seleccionado existe en el mapa de temas cargados
|
|
1040
1091
|
|
|
1041
|
-
## Por
|
|
1092
|
+
## ¿Por qué GitHub Pages puede comportarse distinto a local?
|
|
1042
1093
|
|
|
1043
|
-
Porque el build de GitHub Pages habilita la
|
|
1094
|
+
Porque el build de GitHub Pages habilita la página inicial de búsqueda y comportamiento específico de exportación.
|
|
1044
1095
|
|
|
1045
1096
|
## ¿Por qué el icono sigue mostrando texto?
|
|
1046
1097
|
|
|
1047
|
-
Define \`site.icons.<Control>.reactIcon\` como booleano \`true\`, con el nombre exacto exportado por React Icons en \`tag\`.
|
|
1098
|
+
Define \`site.icons.<Control>.reactIcon\` como booleano \`true\`, con el nombre exacto exportado por React Icons en \`tag\`. LanguageSelector, ThemeSelector, FocusMode, QuickNavigation, PdfDownload, PdfOpenInNewTab, DocumentPrevious y DocumentNext usan iconos por defecto; cambia cualquier entrada a \`false\` para mostrar texto. Los campos planos \`Icon*ReactIcones\` tienen prioridad si existen ambos formatos. Comprueba si la propia función está desactivada mediante \`HideThemeSelector\`, \`FocusMode\` o las acciones PDF.
|
|
1048
1099
|
|
|
1049
1100
|
## ¿Por qué los hijos del menú o breadcrumbs son diferentes?
|
|
1050
1101
|
|