@gitpagedocs/cli 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,15 @@
1
1
  import { practicalEs } from "./practical-es.mjs";
2
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
+ import { THEME_BACKGROUND_DOCS } from "./theme-backgrounds.mjs";
3
7
 
4
8
  export const docsEs = {
5
9
  ...practicalEs,
6
10
  ...operationsEs,
11
+ ...overviewsEs,
12
+ contentBlocks: CONTENT_BLOCKS_DOCS.es,
7
13
  pdf: `# Documentos PDF
8
14
 
9
15
  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.
@@ -33,11 +39,11 @@ Añade este bloque dentro de \`site\` en \`gitpagedocs/config.json\`:
33
39
 
34
40
  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.
35
41
 
36
- Las acciones PDF usan iconos por defecto. Configura \`site.icons.PdfDownload\` (\`FiDownload\`) y \`site.icons.PdfOpenInNewTab\` (\`FiExternalLink\`) 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
+ 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.
37
43
 
38
44
  ## Ejemplo de ruta y menú
39
45
 
40
- En \`gitpagedocs/docs/versions/0.0.10/config.json\`, conserva las listas de rutas y menús en el nivel principal:
46
+ En \`gitpagedocs/docs/versions/0.0.12/config.json\`, conserva las listas de rutas y menús en el nivel principal:
41
47
 
42
48
  \`\`\`json
43
49
  {
@@ -46,9 +52,9 @@ En \`gitpagedocs/docs/versions/0.0.10/config.json\`, conserva las listas de ruta
46
52
  "title": { "en": "Project guide (English)", "pt": "Guia do projeto (inglês)", "es": "Guía del proyecto (inglés)" },
47
53
  "pdf": {
48
54
  "pathPdf": {
49
- "en": "gitpagedocs/docs/versions/0.0.10/en/gitpagedocs-project-guide.pdf",
50
- "pt": "gitpagedocs/docs/versions/0.0.10/en/gitpagedocs-project-guide.pdf",
51
- "es": "gitpagedocs/docs/versions/0.0.10/en/gitpagedocs-project-guide.pdf"
55
+ "en": "gitpagedocs/docs/versions/0.0.12/en/gitpagedocs-project-guide.pdf",
56
+ "pt": "gitpagedocs/docs/versions/0.0.12/en/gitpagedocs-project-guide.pdf",
57
+ "es": "gitpagedocs/docs/versions/0.0.12/en/gitpagedocs-project-guide.pdf"
52
58
  },
53
59
  "previewEnabled": true,
54
60
  "downloadEnabled": true,
@@ -86,15 +92,15 @@ El botón de nueva pestaña abre el Blob PDF validado en lugar de navegar a la U
86
92
  `,
87
93
  index: `# Git Page Docs
88
94
 
89
- Git Page Docs es un runtime de documentacion multilenguaje para repositorios que incluyen la carpeta \`gitpagedocs/\`.
95
+ Git Page Docs es un runtime de documentación multilenguaje para repositorios que incluyen la carpeta \`gitpagedocs/\`.
90
96
 
91
- ## Que entrega este proyecto
97
+ ## Qué ofrece este proyecto
92
98
 
93
99
  - Renderizado markdown multilenguaje (\`en\`, \`pt\`, \`es\`)
94
- - Ruteo por version (\`/v/:version\`)
100
+ - Ruteo por versión (\`/v/:version\`)
95
101
  - Sistema de temas con templates JSON
96
- - Ejecucion local y en GitHub Pages
97
- - Busqueda de repositorio + render remoto opcional
102
+ - Ejecución local y en GitHub Pages
103
+ - Búsqueda de repositorio + render remoto opcional
98
104
 
99
105
  ## Contrato de carpetas
100
106
 
@@ -107,14 +113,14 @@ El runtime espera esta estructura:
107
113
  - \`gitpagelayouts/layoutsConfig.json\`
108
114
  - \`gitpagelayouts/templates/*.json\`
109
115
 
110
- ## Navegacion rapida
116
+ ## Navegación rápida
111
117
 
112
118
  - Abre **Primeros pasos** para setup local.
113
- - Abre **Configuracion** para detalle completo de \`config.json\`.
114
- - Abre **Publicacion** para comportamiento local/produccion/GitHub Pages.
115
- - Abre **Arquitectura** para mapa de codigo y flujo de datos.
116
- - Abre **Temas y layouts** para creacion de templates.
117
- - Abre **Rutas autorizadas** para configurar clave, roles y autenticacion externa.
119
+ - Abre **Configuración** para detalle completo de \`config.json\`.
120
+ - Abre **Publicación** para comportamiento local/producción/GitHub Pages.
121
+ - Abre **Arquitectura** para mapa de código y flujo de datos.
122
+ - Abre **Temas y layouts** para creación de templates.
123
+ - Abre **Rutas autorizadas** para configurar clave, roles y autenticación externa.
118
124
  - Abre **FAQ** para troubleshooting.
119
125
 
120
126
  ## Referencias detalladas
@@ -122,13 +128,14 @@ El runtime espera esta estructura:
122
128
  - **Referencia de la CLI**: instalación, todos los comandos y flags de compatibilidad.
123
129
  - **Servidor MCP**: cliente, 20 tools, 7 resources y configuración de proveedores.
124
130
  - **Navegación y submenús**: árboles recursivos, URLs y prioridad de breadcrumbs.
131
+ - **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.
125
132
  - **Modo foco**: copiar/descargar Markdown y navegar por sección/documento.
126
133
  - **Accesibilidad y narración**: voces del navegador, controles e interacción con medios.
127
134
  - **Documentos PDF**: vista previa nativa, descarga/nueva pestaña y la guía incluida en inglés.
128
135
  - **Recetas de configuración**: un sitio multilingüe completo y un menú con secciones dentro de secciones.
129
136
  - **Migración y compatibilidad**: actualizar configuraciones desde la versión 0.0.1 conservando tu contenido.
130
137
  - **Solución de problemas**: UTF-8, rutas locales y de Pages, carga de PDF, voces e inicio de MCP.
131
- - **Contribución y validación**: archivos fuente, generación, contratos públicos y comprobaciones de publicación.
138
+ - **Contribución y validación**: archivos fuente, generación, contratos públicos y comprobaciónes de publicación.
132
139
  - **Contenedores HTML**: páginas locales y externas, configuración de rutas/menús y el ejemplo interactivo DOOM.
133
140
 
134
141
  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.
@@ -181,35 +188,35 @@ El repositorio fija pnpm en \`packageManager\`. \`pnpm dev\` activa la búsqueda
181
188
 
182
189
  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.
183
190
  `,
184
- projectOverview: `# Vision general del proyecto
191
+ projectOverview: `# Visión general del proyecto
185
192
 
186
- Git Page Docs es un monorepo pnpm + turborepo que convierte la carpeta \`gitpagedocs/\` de un repositorio en un sitio de documentacion multilingue y versionado — con un asistente de IA integrado y un servidor MCP (Model Context Protocol).
193
+ 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).
187
194
 
188
195
  ## Paquetes del monorepo
189
196
 
190
- - **frontend/** — visor Next.js 15 (App Router, React 19), exportado estaticamente para GitHub Pages.
197
+ - **frontend/** — visor Next.js 15 (App Router, React 19), exportado estáticamente para GitHub Pages.
191
198
  - **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.
192
- - **tools/** — \`@gitpagedocs/tools\`, el nucleo de logica compartido: sistema de IA con 14 proveedores, boveda de credenciales cifrada, cargador de config, caches y logger.
199
+ - **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.
193
200
  - **mcp/** — \`@gitpagedocs/mcp\`, servidor Model Context Protocol (20 herramientas + 7 recursos).
194
201
  - **gitpagedocs/** — el contrato del usuario: \`config.json\`, docs versionados y layouts.
195
202
 
196
203
  ## Stack
197
204
 
198
- - Next.js 15 (App Router) + React 19 + TypeScript; exportacion estatica para GitHub Pages
205
+ - Next.js 15 (App Router) + React 19 + TypeScript; exportación estática para GitHub Pages
199
206
  - gray-matter + marked para Markdown; react-icons
200
207
  - pnpm workspaces + turborepo; Vitest + Playwright; ESLint
201
208
 
202
209
  ## Destacados
203
210
 
204
- - Multilingue (\`en\`, \`pt\`, \`es\`) y rutas por version (\`/v/:version\`)
205
- - Sistema de IA con 14 proveedores (OpenAI, Anthropic, Gemini, Ollama, Mistral, DeepSeek, Cohere, Groq, xAI y mas) con streaming
206
- - Claves de IA **cifradas en reposo** (AES-256-GCM) detras de una contrasena local — nunca en texto plano
211
+ - Multilingüe (\`en\`, \`pt\`, \`es\`) y rutas por versión (\`/v/:version\`)
212
+ - Sistema de IA con 14 proveedores (OpenAI, Anthropic, Gemini, Ollama, Mistral, DeepSeek, Cohere, Groq, xAI y más) con streaming
213
+ - Claves de IA **cifradas en reposo** (AES-256-GCM) detrás de una contraseña local — nunca en texto plano
207
214
  - **Panel de chat de IA** en los docs + una **consola \`/ai\`** dedicada
208
- - Sistema de 64 temas (variantes oscuras y claras); ejecucion local y en GitHub Pages
215
+ - Sistema de 64 temas (variantes oscuras y claras); ejecución local y en GitHub Pages
209
216
  `,
210
217
  functionalities: `# Funcionalidades
211
218
 
212
- Referencia completa de opciones CLI, claves de configuracion y funciones del runtime.
219
+ Referencia completa de opciones CLI, claves de configuración y funciones del runtime.
213
220
 
214
221
  ## Línea de comandos
215
222
 
@@ -217,23 +224,23 @@ Consulta **Referencia de la CLI** para comandos, flags, ejemplos y compatibilida
217
224
 
218
225
  ## Tipos de contenido
219
226
 
220
- | Tipo | Clave config | Descripcion |
227
+ | Tipo | Clave config | Descripción |
221
228
  |------|--------------|-------------|
222
229
  | Markdown | \`routes-md\` | Archivos .md con \`path\` por idioma |
223
230
  | HTML | \`routes-html\` | \`path\` local o \`url\` externa |
224
- | Video | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
231
+ | Vídeo | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
225
232
  | Audio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
226
233
  | PDF | \`routes-pdf\` | \`pdf.pathPdf\` por idioma; vista previa nativa y descarga |
227
234
 
228
- ## Visor de codigo fuente
235
+ ## Visor de código fuente
229
236
 
230
- El config de version puede renderizar un contenedor **Codigo fuente** via \`routes-source-viewer\` y \`menus-header-source-viewer\`. El viewer lee el arbol del repositorio en GitHub en tiempo de ejecucion y aplica el tema actual de la documentacion.
237
+ 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.
231
238
 
232
- - Arbol del repositorio desde \`source-viewer-path\`; la branch por defecto es \`main\`
233
- - Navegacion por carpetas y filtro de archivos
239
+ - Árbol del repositorio desde \`source-viewer-path\`; la branch por defecto es \`main\`
240
+ - Navegación por carpetas y filtro de archivos
234
241
  - Listado de directorios estilo GitHub
235
- - Renderizado de codigo con numeros de linea
236
- - Alternancia vista previa/codigo para Markdown, incluido \`README.md\`
242
+ - Renderizado de código con números de línea
243
+ - Alternancia vista previa/código para Markdown, incluido \`README.md\`
237
244
  - Carpetas colapsables en la barra lateral
238
245
 
239
246
  ## Claves de config (site)
@@ -243,108 +250,112 @@ El config de version puede renderizar un contenedor **Codigo fuente** via \`rout
243
250
  - \`ProjectLink\`, \`layoutsConfigPathOficial\`, \`layoutsConfigPath\`
244
251
  - Idiomas: \`site.languages\` (activa/desactiva cada uno); textos de la UI: \`gitpagedocs/langs/<lang>.json\`
245
252
 
246
- ## Reproduccion de medios (un sonido a la vez)
253
+ ## Reproducción de medios (un sonido a la vez)
247
254
 
248
- \`site.mediaExclusivePlayback\` (por defecto \`true\`): reproducir un video de ruta pausa la radio y las pistas de audio, y reproducir la radio o una pista de audio pausa el video. Funciona con YouTube y Vimeo (mediante las APIs de sus reproductores), archivos nativos (\`mp4\`, \`webm\`, …) y cualquier otro embed.
255
+ \`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.
249
256
 
250
- Para mostrar un video sin sonido mientras la radio o una pista de audio lo explica, usa \`"muted": true\` en el objeto \`video\` de la ruta: el video reproduce solo la imagen y queda fuera de la regla. \`"mediaExclusivePlayback": false\` desactiva la regla en todo el sitio.
257
+ 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.
251
258
 
252
259
  ## Variables de entorno
253
260
 
254
- - \`GITPAGEDOCS_REPOSITORY_SEARCH\` – busqueda de repositorio (local)
261
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH\` – búsqueda de repositorio (local)
255
262
  - \`GITHUB_ACTIONS\` – modo build GitHub Pages
256
263
 
257
264
  ## Asistente de IA
258
265
 
259
- Los docs traen un asistente de IA en dos superficies: un **panel de chat** dentro de los docs (boton de chat de IA en la barra lateral, activado por \`site.AiChatEnabled\`) y una pagina **consola \`/ai\`** dedicada.
266
+ 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.
260
267
 
261
- - **14 proveedores** en un unico core compartido: OpenAI, Anthropic, Gemini, OpenRouter, Ollama, Azure OpenAI, Mistral, DeepSeek, Cohere, Groq, xAI, Together, Fireworks, Perplexity.
262
- - **Eleccion de modelo** — desde el catalogo de cada proveedor (\`gitpagedocs models <proveedor>\`); un id de modelo guardado que el proveedor retiro se reemplaza por el predeterminado del proveedor automaticamente.
263
- - **Cifrado en reposo** — tu clave de API se sella con AES-256-GCM detras de una **contrasena local** y nunca queda en texto plano ni en logs.
264
- - **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 contrasena de nuevo.
268
+ - **14 proveedores** en un único core compartido: OpenAI, Anthropic, Gemini, OpenRouter, Ollama, Azure OpenAI, Mistral, DeepSeek, Cohere, Groq, xAI, Together, Fireworks, Perplexity.
269
+ - **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.
270
+ - **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.
271
+ - **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.
265
272
  - **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!".
266
- - **Generacion de documentacion con IA** — \`gitpagedocs ai\` recorre las rutas elegidas y escribe markdown multilingue (pt/en/es); reutilizable via \`.gitpagedocsconfig\`, cuya clave de API queda sellada en la boveda cifrada \`.gitpagedocsvault\` (la contrasena de la boveda se pide en cada ejecucion). \`gitpagedocs chat\` lleva el mismo asistente a la terminal.
273
+ - **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.
267
274
 
268
275
  ## Servidor MCP
269
276
 
270
- \`gitpagedocs mcp start\` levanta un servidor Model Context Protocol (stdio) que expone **20 tools** (sistema de archivos, IA, generacion/analisis de docs) y **7 resources** (\`project://structure|docs|config|repository|readme|ai/providers|ai/models\`) para editores y agentes de IA.
277
+ \`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.
271
278
  `,
272
- configuration: `# Configuracion
279
+ configuration: `# Configuración
273
280
 
274
- La configuracion de runtime esta en \`gitpagedocs/config.json\`. Los textos de la UI viven al lado, un archivo por idioma.
281
+ La configuración de runtime está en \`gitpagedocs/config.json\`. Los textos de la UI viven al lado, un archivo por idioma.
275
282
 
276
283
  ## Idiomas (\`site.languages\` + \`langs/\`)
277
284
 
278
- - \`site.languages\` en \`gitpagedocs/config.json\` activa (\`true\`) o desactiva (\`false\`) cada idioma, en el orden del menu: \`{ "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.
279
- - \`gitpagedocs/langs/<lang>.json\` guarda los textos de ese idioma: \`langmenu\` (cabecera, busqueda, visor de codigo, reproductor de audio, chat de IA y acceso a los docs) y \`translations\` (\`notFound\`, \`navigation\`, \`footer\`).
285
+ - \`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.
286
+ - \`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\`).
280
287
  - Para agregar un idioma, crea \`langs/<lang>.json\` y agrega \`"<lang>": true\` en \`site.languages\`.
281
- - Los \`config.json\` antiguos que aun traen \`site.langmenu\` / \`translations\` inline siguen funcionando; cuando existen ambos, los archivos de \`langs/\` prevalecen y cualquier clave ausente se completa desde la version actual.
288
+ - 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.
282
289
 
283
- ## Seccion \`site\`
290
+ ## Sección \`site\`
284
291
 
285
292
  Claves principales:
286
293
 
287
- - \`name\`: titulo del proyecto en UI
294
+ - \`name\`: título del proyecto en UI
288
295
  - \`defaultLanguage\`: idioma por defecto
289
296
  - \`HideThemeSelector\`: ocultar/mostrar selector de tema
290
297
  - \`ThemeDefault\`: id del tema inicial
291
298
  - \`ThemeModeDefault\`: modo inicial (\`light\` o \`dark\`)
292
299
  - \`ProjectLink\`: URL de repositorio para acciones de cabecera
293
- - \`docsVersion\`: version seleccionada por defecto
300
+ - \`docsVersion\`: versión seleccionada por defecto
294
301
  - \`ActiveNavigation\`: habilita la navegación rápida y el atajo Ctrl+K
295
302
  - \`FocusMode\`: habilita modo foco/lectura
296
303
  - \`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.
297
- - \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamano del icono principal
304
+ - \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamaño del icono principal
298
305
  - \`IconImageMenuHeaderLightImg\`, \`IconImageMenuHeaderDarkImg\`: icono principal (light/dark)
299
- - \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamano del icono enlace del proyecto
306
+ - \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamaño del icono enlace del proyecto
300
307
  - \`IconProjectLinkLightImg\`, \`IconProjectLinkDarkImg\`: icono enlace del proyecto
301
- - \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamano del icono enlaces de version
302
- - \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: icono enlaces de version
303
- - \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamano del icono info
308
+ - \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamaño del icono enlaces de versión
309
+ - \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: icono enlaces de versión
310
+ - \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamaño del icono info
304
311
  - \`IconInfoHeaderMenuLightImg\`, \`IconInfoHeaderMenuDarkImg\`: icono info
305
- - \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamano del icono preview
312
+ - \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamaño del icono preview
306
313
  - \`IconPreviewProjectLinkLightImg\`, \`IconPreviewProjectLinkDarkImg\`: icono preview
307
314
  - \`layoutsConfigPath\`: fallback remoto de layouts
308
- - \`rendering\`: URL canonica publicada
315
+ - \`rendering\`: URL canónica publicada
309
316
 
310
317
  ## Controles de idioma, tema, foco, navegación rápida, PDF y documentos
311
318
 
312
- 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:
319
+ En \`gitpagedocs/config.json\`, estas entradas de \`site.icons\` configuran idioma, tema, versión, foco, navegación Ctrl+K, acciones PDF y navegación al pie de los documentos. Los nueve controles utilizan React Icons por defecto:
313
320
 
314
321
  \`\`\`json
315
322
  {
316
323
  "site": {
317
324
  "icons": {
318
325
  "LanguageSelector": {
319
- "reactIcon": true, "tag": "FiGlobe", "size": "22px",
326
+ "reactIcon": true, "tag": "SiGoogletranslate", "size": "22px",
320
327
  "colorDark": "currentColor", "colorLight": "currentColor"
321
328
  },
322
329
  "ThemeSelector": {
323
- "reactIcon": true, "tag": "BsSunFill", "size": "22px",
330
+ "reactIcon": true, "tag": "LuPencil", "size": "22px",
324
331
  "colorDark": "currentColor", "colorLight": "currentColor"
325
332
  },
326
333
  "FocusMode": {
327
- "reactIcon": true, "tag": "MdFullscreen", "size": "22px",
334
+ "reactIcon": true, "tag": "LuBookOpen", "size": "22px",
335
+ "colorDark": "currentColor", "colorLight": "currentColor"
336
+ },
337
+ "VersionSelector": {
338
+ "reactIcon": true, "tag": "LuGitBranch", "size": "22px",
328
339
  "colorDark": "currentColor", "colorLight": "currentColor"
329
340
  },
330
341
  "QuickNavigation": {
331
- "reactIcon": true, "tag": "FiSearch", "size": "22px",
342
+ "reactIcon": true, "tag": "LuSearch", "size": "22px",
332
343
  "colorDark": "currentColor", "colorLight": "currentColor"
333
344
  },
334
345
  "PdfDownload": {
335
- "reactIcon": true, "tag": "FiDownload", "size": "22px",
346
+ "reactIcon": true, "tag": "LuDownload", "size": "22px",
336
347
  "colorDark": "currentColor", "colorLight": "currentColor"
337
348
  },
338
349
  "PdfOpenInNewTab": {
339
- "reactIcon": true, "tag": "FiExternalLink", "size": "22px",
350
+ "reactIcon": true, "tag": "LuExternalLink", "size": "22px",
340
351
  "colorDark": "currentColor", "colorLight": "currentColor"
341
352
  },
342
353
  "DocumentPrevious": {
343
- "reactIcon": true, "tag": "FiChevronLeft", "size": "22px",
354
+ "reactIcon": true, "tag": "LuChevronLeft", "size": "22px",
344
355
  "colorDark": "currentColor", "colorLight": "currentColor"
345
356
  },
346
357
  "DocumentNext": {
347
- "reactIcon": true, "tag": "FiChevronRight", "size": "22px",
358
+ "reactIcon": true, "tag": "LuChevronRight", "size": "22px",
348
359
  "colorDark": "currentColor", "colorLight": "currentColor"
349
360
  }
350
361
  }
@@ -356,66 +367,68 @@ Cada control es independiente: \`reactIcon: true\` muestra el icono (por defecto
356
367
 
357
368
  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.
358
369
 
359
- ## Seccion \`VersionControl\`
370
+ ## Sección \`VersionControl\`
371
+
372
+ \`site.icons.VersionSelector\` utiliza \`LuGitBranch\` por defecto. Define \`reactIcon: false\` para mostrar el texto de la versión seleccionada; \`true\` muestra el icono. Personaliza los mismos campos \`tag\`, \`size\`, \`colorDark\` y \`colorLight\`. El selector aparece solo cuando hay más de una versión de documentación; conserva el nombre accesible localizado del selector y muestra la versión seleccionada en el tooltip.
360
373
 
361
374
  \`VersionControl.versions\` define:
362
375
 
363
- - \`id\`: identificador de version
364
- - \`path\`: ruta de config de version
376
+ - \`id\`: identificador de versión
377
+ - \`path\`: ruta de config de versión
365
378
  - links opcionales (\`ProjectLink\`, \`branch\`, \`release\`, \`commit\`)
366
379
  - metadatos opcionales del source viewer (\`source-viewer\`, \`source-viewer-path\`)
367
380
 
368
- ## Navegacion y rutas
381
+ ## Navegación y rutas
369
382
 
370
383
  - \`routes\`: rutas markdown por idioma (legado)
371
- - \`menus-header\`: menu jerarquico
372
- - \`translations\`: etiquetas UI para not-found y navegacion
384
+ - \`menus-header\`: menú jerarquico
385
+ - \`translations\`: etiquetas UI para not-found y navegación
373
386
 
374
- ## Autorizacion (config de version)
387
+ ## Autorización (config de versión)
375
388
 
376
- - \`auth\`: configuraciones globales de autorizacion para esa version
389
+ - \`auth\`: configuraciones globales de autorización para esa versión
377
390
  - \`auth.accessKeys\`: mapa de claves usado por \`authorization.accessKeyId\`
378
391
  - \`auth.rolesStorageKey\`: clave de localStorage para bootstrap de roles
379
392
  - \`auth.providers\`: adaptadores de proveedor (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
380
393
 
381
- ## Tipos de contenido (config de version)
394
+ ## Tipos de contenido (config de versión)
382
395
 
383
- Los configs de version soportan multiples tipos:
396
+ Los configs de versión soportan múltiples tipos:
384
397
 
385
- - \`routes-md\`: Rutas markdown con \`title\`, \`description\` (centrados via \`titlePosition\`, \`descriptionPosition\`)
386
- - \`routes-source-viewer\`: Contenedores de codigo fuente con \`source-viewer: true\` y \`source-viewer-path\`
387
- - \`routes-html\`: Rutas de paginas HTML por idioma
388
- - \`routes-video\`: Config de video con \`video.videoType\` (youtube, vimeo, mp4, etc.) y \`video.pathVideo\`
398
+ - \`routes-md\`: Rutas markdown con \`title\`, \`description\` (centrados vía \`titlePosition\`, \`descriptionPosition\`)
399
+ - \`routes-source-viewer\`: Contenedores de código fuente con \`source-viewer: true\` y \`source-viewer-path\`
400
+ - \`routes-html\`: Rutas de páginas HTML por idioma
401
+ - \`routes-video\`: Config de vídeo con \`video.videoType\` (youtube, vimeo, mp4, etc.) y \`video.pathVideo\`
389
402
  - \`routes-audio\`: Config de audio con \`audio.audioType\` (youtube, mp3, etc.) y \`audio.pathAudio\`
390
403
  - \`routes-pdf\`: PDF con \`pdf.pathPdf\` por idioma; consulta Documentos PDF.
391
- - \`authorization\` (md/html/video): guardia de acceso por clave, roles y autenticacion externa
392
- - \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`, \`menus-header-pdf\`: menus por tipo
393
- - \`hierarchyPage\`: orden de contenedores en la pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
394
- - \`hierarchyMenu\`: orden de secciones del menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
404
+ - \`authorization\` (md/html/vídeo): guardia de acceso por clave, roles y autenticación externa
405
+ - \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`, \`menus-header-pdf\`: menús por tipo
406
+ - \`hierarchyPage\`: orden de contenedores en la página \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
407
+ - \`hierarchyMenu\`: orden de secciones del menú \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
395
408
 
396
409
  Cada ruta puede incluir \`title\`, \`description\` (por idioma), \`titleCss\`, \`titlePosition: "center"\`, \`descriptionPosition: "center"\`, \`titleIsVisible\`, \`descriptionIsVisible\`.
397
410
 
398
- Los ajustes que comparten todas las rutas se escriben una sola vez en \`routeDefaults\`, al inicio del config de la version; cada ruta guarda solo sus propios valores, y un valor escrito en la ruta gana sobre \`routeDefaults\`.
411
+ 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\`.
399
412
 
400
413
  ## Variables por ruta (blockLink, container, url, browseAll)
401
414
 
402
415
  Opciones por ruta en \`routes-md\`, \`routes-html\` y \`routes-video\`:
403
416
 
404
417
  - **\`blockLink\`** (defecto: true) – Para HTML: si true, los enlaces abren en nueva pestaña (\`target="_blank"\`); si false, en el mismo contexto.
405
- - **\`container\`** – \`"full"\` = altura automatica; numero (ej: \`500\`) = altura fija en px con overflow auto. Se aplica a md, html y video.
406
- - **\`url\`** – Solo en \`routes-html\`: \`Record<LanguageCode, string>\` con URLs externas. Al definirse, el iframe usa \`src={url}\` en vez de HTML local via \`srcDoc\`. Las rutas con \`url\` no generan archivos HTML locales.
418
+ - **\`container\`** – \`"full"\` = altura automática; numero (ej: \`500\`) = altura fija en px con overflow auto. Se aplica a md, html y vídeo.
419
+ - **\`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.
407
420
  - **\`browseAll\`** (defecto: false) – Si true, el contenedor muestra botones Anterior/Siguiente para navegar entre todos los items de ese tipo.
408
421
 
409
422
  ## Tipos de contenido: path vs url (HTML)
410
423
 
411
424
  - **Markdown (\`routes-md\`)**: usa \`path\` apuntando a archivos \`.md\` locales.
412
- - **HTML (\`routes-html\`)**: usa \`path\` para archivos HTML locales (sin extension .html en config) o \`url\` para URLs externas. Con \`url\`, el iframe carga la pagina externa; no se genera archivo local.
413
- - **Video (\`routes-video\`)**: usa \`video.pathVideo\` y \`video.videoType\` (youtube, vimeo, mp4, etc.).
425
+ - **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.
426
+ - **Vídeo (\`routes-video\`)**: usa \`video.pathVideo\` y \`video.videoType\` (youtube, vimeo, mp4, etc.).
414
427
 
415
428
  ## Variables de entorno
416
429
 
417
- - \`GITPAGEDOCS_REPOSITORY_SEARCH\`: activa/desactiva busqueda remota en local
418
- - \`GITHUB_ACTIONS\`: habilita comportamiento especifico de GitHub Pages
430
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH\`: activa/desactiva búsqueda remota en local
431
+ - \`GITHUB_ACTIONS\`: habilita comportamiento específico de GitHub Pages
419
432
 
420
433
  ## Comportamiento del sitio y valores predeterminados
421
434
 
@@ -455,7 +468,7 @@ La entrada \`QuickNavigation\` controla la apariencia de icono/texto del botón
455
468
  `,
456
469
  deployment: `# Publicación
457
470
 
458
- Elige el visor oficial para un repositorio público, publica tu propio GitHub Pages o aloja un export estático compilado desde el runtime.
471
+ 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.
459
472
 
460
473
  ## Visor oficial
461
474
 
@@ -491,36 +504,36 @@ En un checkout del runtime con dependencias instaladas, \`node cli/index.mjs --h
491
504
 
492
505
  ## Releases npm para mantenedores
493
506
 
494
- El monorepo publica \`@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 publica workspaces en orden de dependencia. Crear solo una release de GitHub no es su disparador.
507
+ 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.
495
508
 
496
509
  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.
497
510
  `,
498
511
  architecture: `# Arquitectura
499
512
 
500
- El proyecto esta organizado por fronteras de feature y responsabilidades de runtime.
513
+ El proyecto está organizado por fronteras de feature y responsabilidades de runtime.
501
514
 
502
515
  ## Paquetes
503
516
 
504
517
  - **frontend/** — visor Next.js (Feature-Sliced: app / widgets / features / entities / shared); export estatico.
505
- - **cli/** — el bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de documentacion con IA).
518
+ - **cli/** — el bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de documentación con IA).
506
519
  - **tools/** — \`@gitpagedocs/tools\`: ai/ security/ crypto/ cache/ config/ logger/ errors/ filesystem/ documentation/ i18n/ ports/.
507
520
  - **mcp/** — \`@gitpagedocs/mcp\`: herramientas + recursos MCP que delegan a tools/.
508
521
 
509
522
  ## Modulos principales (frontend)
510
523
 
511
- - \`frontend/src/app/[[...repo]]/page.tsx\` — parser de rutas, generateStaticParams, seleccion de shell.
512
- - \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota, version, parse markdown, layouts + temas.
513
- - \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/version/tema, sync de URL, montaje del chat de IA.
524
+ - \`frontend/src/app/[[...repo]]/page.tsx\` — parser de rutas, generateStaticParams, selección de shell.
525
+ - \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota, versión, parse markdown, layouts + temas.
526
+ - \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/versión/tema, sync de URL, montaje del chat de IA.
514
527
 
515
528
  ## Seguridad: credenciales de IA cifradas
516
529
 
517
- La consola \`/ai\` y el panel de chat exigen una contrasena local que deriva (PBKDF2) una clave AES-256-GCM; las claves quedan cifradas en \`localStorage\` y solo se descifran durante la sesion (\`@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 contrasena de nuevo. En la CLI, la clave de \`.gitpagedocsconfig\` queda sellada en la boveda cifrada \`.gitpagedocsvault\` y la contrasena de la boveda se pide en cada ejecucion.
530
+ 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.
518
531
 
519
532
  ## Flujo de datos
520
533
 
521
534
  1. Llega la ruta (\`/owner/repo/v/x.y.z\` o equivalente local)
522
535
  2. Se resuelve config (local o remoto)
523
- 3. Config de version sobreescribe rutas/menus base
536
+ 3. Config de versión sobreescribe rutas/menús base
524
537
  4. Markdown se carga y convierte a HTML
525
538
  5. Template de layout se resuelve y aplica en CSS vars
526
539
  6. Shell renderiza contenido y controles
@@ -529,7 +542,7 @@ La consola \`/ai\` y el panel de chat exigen una contrasena local que deriva (PB
529
542
 
530
543
  - fallback de carga para layouts/templates
531
544
  - carga de markdown por idioma con fallback de error
532
- - sincronizacion de idioma/version/tema via localStorage
545
+ - sincronización de idioma/versión/tema vía localStorage
533
546
  `,
534
547
  githubIssuesProjects: `# GitHub Issues y Projects
535
548
 
@@ -556,21 +569,21 @@ Conceptos basicos de Git para principiantes.
556
569
 
557
570
  Protege rutas por clave de acceso, roles requeridos y proveedores externos.
558
571
 
559
- ## Ubicacion del config de version
572
+ ## Ubicacion del config de versión
560
573
 
561
574
  Configura en:
562
575
 
563
576
  - \`gitpagedocs/docs/versions/<version>/config.json\`
564
577
 
565
- ## Seccion global auth
578
+ ## Sección global auth
566
579
 
567
- Usa \`auth\` en la raiz del config de version:
580
+ Usa \`auth\` en la raiz del config de versión:
568
581
 
569
582
  - \`accessKeys\`: mapa de ids de clave al secreto esperado
570
583
  - \`rolesStorageKey\`: clave de localStorage para bootstrap de roles
571
584
  - \`providers\`: lista de proveedores externos (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
572
585
 
573
- ## Autorizacion por ruta
586
+ ## Autorización por ruta
574
587
 
575
588
  Dentro de cada ruta (\`routes-md\`, \`routes-html\`, \`routes-video\`):
576
589
 
@@ -587,7 +600,7 @@ Define \`authorization.accessKeyId\` y la clave correspondiente en \`auth.access
587
600
 
588
601
  ### Fase B - Roles
589
602
 
590
- Define \`authorization.requiredRoles\` con uno o mas roles.
603
+ Define \`authorization.requiredRoles\` con uno o más roles.
591
604
 
592
605
  Los roles pueden venir de:
593
606
 
@@ -629,11 +642,11 @@ Cada template normalmente incluye:
629
642
 
630
643
  ## Comportamiento en runtime
631
644
 
632
- - tema activo viene de config/seleccion de usuario
645
+ - tema activo viene de config/selección de usuario
633
646
  - toggle light/dark resuelve tema pareado por referencia
634
647
  - variables CSS se generan desde tokens del template
635
648
 
636
- ## Buenas practicas
649
+ ## Buenas prácticas
637
650
 
638
651
  - mantener contraste accesible
639
652
  - mantener escala consistente de espacios y bordes
@@ -646,6 +659,8 @@ Elige un tema mediante el selector o configura \`site.ThemeDefault\` con su ID e
646
659
  En tu repositorio, ejecuta la CLI con \`--layoutconfig\`, edita la plantilla generada y conserva el ID coherente con \`layoutsConfig.json\`. El contenido de ruta y \`site.icons\` son independientes del catálogo de temas. Usa \`currentColor\` para iconos que heredan el color de texto o configura colores claros/oscuros con contraste suficiente.
647
660
 
648
661
  Al contribuir en Git Page Docs, la fuente es \`gitpagelayouts/v2/base.json\` junto con \`gitpagelayouts/v2/layouts/<id>.json\`. Ejecuta \`pnpm layouts:sync\` para generar plantillas y documentación. La sincronización puede sobrescribir las ediciones directas de plantillas generadas.
662
+
663
+ ${THEME_BACKGROUND_DOCS.es}
649
664
  `,
650
665
  mcp: `# Servidor MCP
651
666
 
@@ -706,7 +721,7 @@ Selecciona el proveedor con \`configure_ai_provider\` o con \`.gitpagedocs-mcp.j
706
721
  | \`fireworks\` | \`FIREWORKS_API_KEY\` |
707
722
  | \`perplexity\` | \`PERPLEXITY_API_KEY\` |
708
723
 
709
- Sin una selección válida, el proveedor predeterminado es OpenAI. Ollama no requiere clave de API; el servicio local y el modelo elegido deben estar disponibles. \`OLLAMA_BASE_URL\` es opcional. La URL base de Azure es la URL completa de la operación de chat, incluido deployment y versión de API cuando sean necesarios. La lista de modelos es un catálogo distribuido, no una comprobación en tiempo real.
724
+ Cuando la selección guardada está ausente, no se puede leer o contiene JSON inválido, el proveedor predeterminado es OpenAI. Un ID de proveedor desconocido en JSON legible produce un error explícito sin seleccionar otro proveedor. Ollama no requiere clave de API; el servicio local y el modelo elegido deben estar disponibles. \`OLLAMA_BASE_URL\` es opcional. La URL base de Azure es la URL completa de la operación de chat, incluido deployment y versión de API cuando sean necesarios. La lista de modelos es un catálogo distribuido, no una comprobación en tiempo real.
710
725
 
711
726
  ## Referencia de tools
712
727
 
@@ -762,7 +777,7 @@ La generación envía el contenido seleccionado del proyecto al proveedor config
762
777
 
763
778
  - Lectura de archivos: hasta 512.000 bytes. Listado: hasta 2.000 entradas; árboles recopilados del proyecto: 400 entradas.
764
779
  - Búsqueda: hasta 5.000 entradas, 200 resultados y 240 caracteres por línea encontrada.
765
- - Recopilación de documentación: primeros 40 archivos Markdown entre hasta 2.000 entradas; se omiten archivos superiores a 40.000 bytes. El contexto del proveedor se limita a 24.000 caracteres.
780
+ - Recopilación de documentación: primeros 40 archivos Markdown entre hasta 2.000 entradas; se omiten archivos superiores a 40.000 bytes. El contexto recopilado de archivos y Markdown se limita a 24.000 caracteres. No es un límite global del prompt: árbol/paquete, documento existente y pregunta proporcionada pueden añadir contenido según la tool seleccionada.
766
781
  - El listado omite carpetas de dependencias/build como \`node_modules\`, \`.git\`, \`.next\`, \`out\`, \`dist\`, \`prebuilt\`, \`.turbo\` y \`coverage\`. No interpreta \`.gitignore\`; archivos como \`.env\` no se excluyen automáticamente. Ejecuta solo en proyectos de confianza y selecciona el contenido que se expondrá.
767
782
  - La verificación de rutas es léxica; el proceso no es un sandbox del sistema operativo ni garantiza aislamiento de symlinks/junctions. Leer \`project://config\` puede importar configuración JavaScript/TypeScript.
768
783
  - Los fallos de tools incluyen \`isError: true\`. Los resources ausentes devuelven \`Unavailable: ...\`. Revisa stderr en el cliente para errores de inicio; stdout está reservado para JSON-RPC.
@@ -772,7 +787,7 @@ La generación envía el contenido seleccionado del proyecto al proveedor config
772
787
 
773
788
  ## Comandos CLI
774
789
 
775
- | Comando | Descripcion |
790
+ | Comando | Descripción |
776
791
  |---------|-------------|
777
792
  | \`npx @gitpagedocs/cli\` | Genera config y docs en \`gitpagedocs/\` |
778
793
  | \`npx @gitpagedocs/cli --layoutconfig\` | Tambien genera layouts/templates locales en \`gitpagelayouts/\` |
@@ -780,28 +795,28 @@ La generación envía el contenido seleccionado del proyecto al proveedor config
780
795
  | \`npx @gitpagedocs/cli --push --owner X --repo Y\` | Configura workflow, commit, push |
781
796
  | \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interactivo con prompts (por defecto en una terminal) |
782
797
  | \`npx @gitpagedocs/cli --no-interactive\` / \`--yes\` / \`-y\` | Nunca pregunta; usa flags y valores por defecto |
783
- | \`gitpagedocs ai\` | Generador interactivo de documentacion con IA |
784
- | \`gitpagedocs chat [pregunta]\` | Chat de IA con streaming en la terminal (REPL en TTY; respuesta unica con pregunta o stdin) |
785
- | \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista proveedores de IA / modelos del catalogo |
786
- | \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Genera documentacion con IA |
787
- | \`gitpagedocs deploy\` / \`pages [actions\\|deploy]\` | Configura GitHub Pages via Actions + push |
798
+ | \`gitpagedocs ai\` | Generador interactivo de documentación con IA |
799
+ | \`gitpagedocs chat [pregunta]\` | Chat de IA con streaming en la terminal (REPL en TTY; respuesta única con pregunta o stdin) |
800
+ | \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista proveedores de IA / modelos del catálogo |
801
+ | \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Genera documentación con IA |
802
+ | \`gitpagedocs deploy\` / \`pages [actions\\|deploy]\` | Configura GitHub Pages vía Actions + push |
788
803
  | \`gitpagedocs docs\` | Actualiza las regiones gestionadas de README/CONTRIBUTING/SECURITY |
789
- | \`gitpagedocs password\` | Define la contrasena de acceso a la documentacion (clave publica en \`site.docsAccess\`) |
790
- | \`gitpagedocs config\` / \`config clear\` | Muestra la config resuelta / borra la config guardada y la boveda de claves |
791
- | \`gitpagedocs doctor\` / \`version\` / \`update\` | Diagnostico / version / comprobacion de actualizacion en el registro |
804
+ | \`gitpagedocs password\` | Define la contraseña de acceso a la documentación (clave pública en \`site.docsAccess\`) |
805
+ | \`gitpagedocs config\` / \`config clear\` | Muestra la config resuelta / borra la config guardada y la bóveda de claves |
806
+ | \`gitpagedocs doctor\` / \`version\` / \`update\` | Diagnóstico / versión / comprobación de actualización en el registro |
792
807
  | \`gitpagedocs mcp start\` | Inicia el servidor MCP por stdio |
793
808
 
794
809
  Instala globalmente con \`npm install -g @gitpagedocs/cli\` o ejecuta sin instalar con \`npx @gitpagedocs/cli\`.
795
810
 
796
811
  ## Opciones CLI
797
812
 
798
- | Opcion | Descripcion |
813
+ | Opcion | Descripción |
799
814
  |--------|-------------|
800
815
  | \`--owner <user>\` | Owner de GitHub |
801
816
  | \`--repo <repo>\` | Repositorio GitHub |
802
817
  | \`--path <subpath>\` | Subruta de docs (ej: \`docs\`); sin ella, base path = nombre del repo para CSS/JS en project sites |
803
818
  | \`--output <dir>\` | Directorio de salida (default: \`gitpagedocs\`) |
804
- | \`--search <true-or-false>\` | Habilita/deshabilita busqueda de repositorio (\`--home\`) |
819
+ | \`--search <true-or-false>\` | Habilita/deshabilita búsqueda de repositorio (\`--home\`) |
805
820
  | \`--layoutconfig\` | Genera layouts locales en \`gitpagelayouts/\` |
806
821
  | \`--layouts-dir <dir>\` | Carpeta de layouts locales (por defecto: \`gitpagelayouts\`) |
807
822
  | \`--push\` | Crea workflow, commit de artefactos, push |
@@ -812,7 +827,7 @@ Instala globalmente con \`npm install -g @gitpagedocs/cli\` o ejecuta sin instal
812
827
 
813
828
  - \`gitpagedocs/config.json\` – config raiz
814
829
  - \`gitpagedocs/icon.svg\` – icono por defecto
815
- - \`gitpagedocs/docs/versions/<ver>/config.json\` – rutas por version
830
+ - \`gitpagedocs/docs/versions/<ver>/config.json\` – rutas por versión
816
831
  - \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs en markdown
817
832
  - \`gitpagelayouts/\` – solo con \`--layoutconfig\` (carpeta configurable con \`--layouts-dir\`)
818
833
 
@@ -857,7 +872,7 @@ Las rutas definen el contenido; los menús definen cómo encontrarlo. Configúra
857
872
 
858
873
  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.
859
874
 
860
- Los grupos sin \`path-click\` organizan sus hijos. Para un destino Markdown, utiliza su ruta localizada real de \`routes-md[].path\`. El alias \`page:<id>\` lo registran rutas source-viewer, vídeo, audio y PDF; no lo uses en una página que solo contiene Markdown. El ejemplo utiliza la versión \`0.0.8\`: sustituye ese segmento por la versión editada y crea los tres archivos chapter.
875
+ 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.
861
876
 
862
877
  \`\`\`json
863
878
  {
@@ -925,6 +940,14 @@ Los grupos sin \`path-click\` organizan sus hijos. Para un destino Markdown, uti
925
940
 
926
941
  ## Comportamiento del anidamiento
927
942
 
943
+ 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.
944
+
945
+ 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:
946
+
947
+ \`\`\`json
948
+ ${PARENT_MENU_JSON}
949
+ \`\`\`
950
+
928
951
  \`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.
929
952
 
930
953
  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.
@@ -939,7 +962,7 @@ El árbol sirve para navegación lateral, etiquetas de búsqueda, expansión de
939
962
 
940
963
  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.
941
964
 
942
- Los botones anterior/siguiente del pie usan \`site.icons.DocumentPrevious\` (\`FiChevronLeft\`) y \`site.icons.DocumentNext\` (\`FiChevronRight\`) 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.
965
+ 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.
943
966
 
944
967
  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.
945
968
  `,
@@ -978,6 +1001,8 @@ Cada opción tiene valor predeterminado \`true\`; \`false\` oculta la acción o
978
1001
 
979
1002
  ## Copiar y descargar
980
1003
 
1004
+ 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.
1005
+
981
1006
  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.
982
1007
 
983
1008
  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.
@@ -1049,7 +1074,7 @@ Consulta la [referencia de Web Speech API](https://developer.mozilla.org/en-US/d
1049
1074
  `,
1050
1075
  faq: `# FAQ
1051
1076
 
1052
- ## Por que repositorios remotos no abren en local?
1077
+ ## ¿Por qué repositorios remotos no abren en local?
1053
1078
 
1054
1079
  Verifica:
1055
1080
 
@@ -1057,29 +1082,29 @@ Verifica:
1057
1082
  - repositorio objetivo contiene \`gitpagedocs/config.json\`
1058
1083
  - paths markdown del repositorio coinciden con su config de rutas
1059
1084
 
1060
- ## Por que una ruta de version muestra contenido incorrecto?
1085
+ ## ¿Por qué una ruta de versión muestra contenido incorrecto?
1061
1086
 
1062
1087
  Verifica:
1063
1088
 
1064
1089
  - \`VersionControl.versions[*].path\` en \`gitpagedocs/config.json\`
1065
- - config de version tiene \`routes\` y \`menus-header\` validos
1090
+ - config de versión tiene \`routes\` y \`menus-header\` válidos
1066
1091
  - markdown existe para cada idioma
1067
1092
 
1068
- ## Por que tema no se aplica correctamente?
1093
+ ## ¿Por qué tema no se aplica correctamente?
1069
1094
 
1070
1095
  Verifica:
1071
1096
 
1072
- - \`layoutsConfig.json\` referencia templates validos
1073
- - ids de template son unicos
1097
+ - \`layoutsConfig.json\` referencia templates válidos
1098
+ - ids de template son únicos
1074
1099
  - tema seleccionado existe en el mapa de temas cargados
1075
1100
 
1076
- ## Por que GitHub Pages puede comportarse distinto a local?
1101
+ ## ¿Por qué GitHub Pages puede comportarse distinto a local?
1077
1102
 
1078
- Porque el build de GitHub Pages habilita la pagina inicial de busqueda y comportamiento especifico de exportacion.
1103
+ Porque el build de GitHub Pages habilita la página inicial de búsqueda y comportamiento específico de exportación.
1079
1104
 
1080
1105
  ## ¿Por qué el icono sigue mostrando texto?
1081
1106
 
1082
- 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.
1107
+ Define \`site.icons.<Control>.reactIcon\` como booleano \`true\`, con el nombre exacto exportado por React Icons en \`tag\`. LanguageSelector, ThemeSelector, VersionSelector, 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.
1083
1108
 
1084
1109
  ## ¿Por qué los hijos del menú o breadcrumbs son diferentes?
1085
1110