@gitpagedocs/cli 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,116 @@
1
+ import { HTML_ROUTE_JSON, RECIPE_ROOT_JSON, RECIPE_VERSION_JSON } from "./configuration-examples.mjs";
2
+
3
+ export const practicalPt = {
4
+ htmlContainers: `# Containers HTML e exemplos interativos
5
+
6
+ Uma rota HTML exibe um documento local ou uma página externa dentro de um iframe. Use-a para uma demonstração interativa confiável que o Markdown não consegue representar. O scaffold inclui **DOOM: exemplo HTML**, rota 29, com título, descrição e botão traduzidos. O player externo só é carregado quando o visitante decide jogar. O jogo continua hospedado pelo provedor; o pacote npm inclui a página HTML de apresentação, não os arquivos do jogo.
7
+
8
+ ## Configure uma rota HTML local
9
+
10
+ Adicione esta rota ao array \`routes-html\` existente na configuração da versão. Preserve as demais rotas e use um ID distinto para cada destino. Crie cada arquivo referenciado como HTML UTF-8 ou gere o exemplo incluído pela CLI.
11
+
12
+ \`\`\`json
13
+ ${HTML_ROUTE_JSON}
14
+ \`\`\`
15
+
16
+ Adicione um item traduzido em \`menus-header-html\`. Cada \`path-click\` deve corresponder ao caminho da rota no mesmo idioma, como \`gitpagedocs/docs/versions/0.0.10/pt/doom.html\`; não substitua esse caminho HTML local por \`page:29\`. Um rótulo de menu não cria uma rota. HTML aceita a mesma estrutura recursiva \`submenus\` dos outros menus.
17
+
18
+ ## Dimensões, conteúdo e URLs externas
19
+
20
+ \`container: "full"\` aplica uma altura mínima relacionada à janela; um número positivo define a altura em pixels. Omita-o para usar o container normal. \`fullscreenEnabled\` controla a ação de tela cheia do visualizador. Título e descrição da rota são independentes dos títulos escritos dentro do próprio HTML.
21
+
22
+ Para uma página hospedada, use \`url: { "en": "https://example.com/demo", "pt": "https://example.com/demo", "es": "https://example.com/demo" }\` no lugar de \`path\`. Uma rota URL navega o iframe; o HTML local é carregado em \`srcDoc\`. No conteúdo local, prefira estilos incluídos no documento e URLs HTTPS explícitas: srcDoc não resolve automaticamente os recursos relativos ao diretório do arquivo original.
23
+
24
+ O servidor externo pode impedir incorporação por CSP ou X-Frame-Options. Hosts conhecidos que bloqueiam iframe recebem uma alternativa para abrir em nova aba; falhas de qualquer servidor não são detectadas universalmente. Teste o destino real no site publicado. \`blockLink: true\` define nova aba como destino padrão dos links no HTML local; não impede navegação feita por scripts ou links com destino próprio.
25
+
26
+ ## Use e mantenha o exemplo do jogo
27
+
28
+ Escolha o item HTML no menu, leia o aviso sobre o provedor e pressione o botão de carregamento. É necessária conexão; depois siga os controles de início e teclado do próprio player. A página inclui um link direto ao provedor caso a incorporação falhe. Teste foco de teclado, telas pequenas, tela cheia e retorno à documentação. Disponibilidade do player e recursos do navegador podem mudar independentemente do GitPageDocs.
29
+
30
+ Revise o HTML e suas dependências antes de publicar. O iframe atual permite scripts e conteúdo de mesma origem, portanto não funciona como barreira de segurança para HTML arbitrário não confiável. Não inclua segredos em HTML, URLs ou configuração do cliente. A hospedagem estática expõe os arquivos independentemente da visibilidade do menu ou autorização da rota. No ambiente local e no Pages, versione a página com a configuração correspondente e valide os caminhos gerados antes da publicação.
31
+ `,
32
+ configurationRecipes: `# Receitas de configuração
33
+
34
+ Este guia monta um site pequeno em três idiomas, com duas páginas Markdown e menu com três níveis. Comece pela configuração gerada, revise as mudanças e mantenha os arquivos originais no controle de versão. Os exemplos usam os IDs 101 e 102 para distingui-los das páginas incluídas no scaffold.
35
+
36
+ ## 1. Gere e confira a estrutura
37
+
38
+ Execute \`npx --yes @gitpagedocs/cli@0.0.10 --no-interactive --owner SEU_USUARIO --repo SEU_REPOSITORIO\` em um diretório de projeto novo. Neste repositório de código-fonte, \`node cli/index.mjs\` executa a versão do checkout. A geração grava configuração e documentação; ela não inicia o visualizador Next.js.
39
+
40
+ O JSON completo abaixo é um exemplo mínimo de \`gitpagedocs/config.json\`. Em um site existente, mescle os campos relevantes e preserve a identidade do repositório, opções de publicação, temas e demais versões.
41
+
42
+ \`\`\`json
43
+ ${RECIPE_ROOT_JSON}
44
+ \`\`\`
45
+
46
+ As oito entradas herdam a apresentação comum de \`icons.defaults\`. Para mostrar texto em uma ação, acrescente \`"reactIcon": false\` à entrada correspondente. Não altere um default compartilhado apenas para mudar um botão. Campos planos antigos de ícones prevalecem sobre os compactos; remova ou atualize um campo conflitante somente depois de confirmar sua intenção.
47
+
48
+ ## 2. Crie a configuração da versão
49
+
50
+ Salve o próximo JSON completo no caminho do config da versão indicado acima. Uma categoria de menu tem título e \`submenus\`; uma folha tem \`path-click\` localizado. Categorias não precisam de rota. Destinos Markdown apontam para os caminhos reais dos arquivos, sem usar o alias \`page:<id>\`.
51
+
52
+ \`\`\`json
53
+ ${RECIPE_VERSION_JSON}
54
+ \`\`\`
55
+
56
+ Crie \`start.md\` e \`next-steps.md\` nas pastas \`en\`, \`pt\` e \`es\` dessa versão: seis arquivos ao todo. Escreva no idioma correspondente e salve em UTF-8. Comece cada página com um título e acrescente seções \`##\` para testar o modo foco. Os bundles gerados em \`langs/\` contêm os textos da interface, separados do conteúdo dos documentos.
57
+
58
+ ## 3. Mude a apresentação sem perder destinos
59
+
60
+ Com \`nestedMenusEnabled: true\`, o leitor expande Guias → Primeiros passos → página. Com \`false\`, os mesmos destinos aparecem em uma lista plana. Acrescente \`submenus\` recursivamente quando a organização do conteúdo justificar; não há limite fixo de profundidade configurado. Mantenha identidades distintas entre irmãos e evite repetir destinos apenas para aumentar a árvore.
61
+
62
+ Breadcrumbs usam \`site.RouteGuide\`, depois \`routeDefaults.RouteGuide\` da versão e por último a rota individual. O valor explícito mais específico prevalece. \`RouteguideBrand\` é o índice separado de títulos. As setas Voltar/Próximo do rodapé seguem os destinos disponíveis; \`ActiveNavigation\` controla a navegação rápida e Ctrl+K.
63
+
64
+ ## 4. Inclua mídia e valide
65
+
66
+ Consulte Documentos PDF para adicionar \`routes-pdf\` e \`menus-header-pdf\`; o exemplo \`page:23\` aponta para o guia em inglês incluído. Prévia, download e nova aba são independentes da aparência dos ícones. PDFs externos precisam permitir CORS nas três ações; PDFs locais dentro de \`gitpagedocs/\` são preparados ao executar ou compilar o Next.js.
67
+
68
+ Confira todos os idiomas, expanda cada categoria e percorra as folhas. Teste URLs diretas, alterações entre texto e ícone, primeiro/anterior/próximo/último no foco e direções desabilitadas nas extremidades. Inspecione o config da versão quando o rótulo aparece mas o destino falha. Faça commit da configuração revisada junto com os documentos e anexos referenciados.
69
+ `,
70
+ contributing: `# Contribuição e testes
71
+
72
+ Use o repositório de código-fonte para alterar o runtime, a CLI, as ferramentas compartilhadas ou o MCP. Um repositório que apenas consome o visualizador normalmente edita seu próprio conteúdo e configuração. Trabalhe em uma branch focada e descreva o comportamento visível ao usuário e sua validação.
73
+
74
+ ## Altere o pacote responsável
75
+
76
+ \`frontend/\` contém o visualizador Next.js App Router e segue Feature-Sliced Design. Primitivos visuais compartilhados ficam em \`shared\`, dados e schemas de documentação em \`entities\`, recursos do usuário em \`features\` e a composição do leitor em \`widgets\`. Mantenha carregamento de arquivos e repositórios fora dos componentes de apresentação.
77
+
78
+ \`cli/\` é responsável pelo scaffold, comandos, defaults e templates autorais. \`tools/\` fornece lógica reutilizável de configuração, documentação e serviços. \`mcp/\` expõe essas capacidades pelo Model Context Protocol. Uma correção visual normalmente pertence ao frontend; um default do scaffold deve mudar na fonte da CLI e ser regenerado.
79
+
80
+ ## Edite as fontes, não as cópias geradas
81
+
82
+ | Mudança | Fonte de verdade | Resultado gerado |
83
+ | --- | --- | --- |
84
+ | Opções do site e textos de idioma | \`cli/data/\` | Config raiz e \`gitpagedocs/langs/\` |
85
+ | Rotas e seções do menu | Builders da CLI, metadados, mapeamentos e \`menu-sections.mjs\` | Config da versão |
86
+ | Textos da documentação | \`cli/content/docs-{en,pt,es}.mjs\` e módulos importados | Markdown versionado |
87
+ | Regiões gerenciadas | \`tools/src/documentation/sections.ts\` | README, CONTRIBUTING e SECURITY |
88
+ | Definições de layouts | \`gitpagelayouts/v2/\` | Templates e documentação de layouts |
89
+
90
+ Após alterar CLI/conteúdo, execute \`node cli/index.mjs\`, copie \`gitpagedocs/\` para \`tools/gitpagedocs/\` sem excluir versões históricas e execute \`pnpm run baseline:create\`. Use \`node cli/index.mjs docs\` nas regiões gerenciadas e \`pnpm run layouts:sync\` para layouts. Revise o diff: a geração não deve substituir silenciosamente material customizado que você queria manter.
91
+
92
+ ## Teste pelas interfaces públicas
93
+
94
+ Escreva uma regressão que falha antes de implementar. Teste o contrato observável: configuração e arquivos gerados na CLI, respostas de tools/resources no MCP, controles e teclado na UI, interações reais do navegador em navegação e mídia. Evite testes que apenas repetem o algoritmo de um helper interno.
95
+
96
+ Cubra sucesso, recursos indisponíveis, entradas inválidas e limites relevantes. Exemplos: tradução ausente, rota negada, título PDF vazio, pop-up bloqueado, falha CORS, limites primeiro/último e lista vazia de vozes nativas. Use pastas temporárias isoladas para geradores. Simule rede ou APIs do navegador na fronteira pública; mantenha colaboradores do projeto reais quando possível.
97
+
98
+ \`\`\`sh
99
+ pnpm install --frozen-lockfile
100
+ pnpm run typecheck
101
+ pnpm run lint
102
+ pnpm exec vitest run
103
+ pnpm run smoke:all
104
+ pnpm run build
105
+ pnpm exec cross-env PORT=3100 pnpm run test:e2e
106
+ \`\`\`
107
+
108
+ A configuração E2E usa as portas 3100 e 3101; preserve o serviço existente na 3000. \`smoke:all\` inclui contratos da CLI, serviços compartilhados, descoberta MCP, documentação e \`baseline:check\`. \`pnpm run test:cov\` acrescenta cobertura. O build local de produção é diferente do ambiente de exportação estática do Pages, que também deve ser validado quando caminhos de publicação mudam.
109
+
110
+ ## Revise e publique
111
+
112
+ Revise acessibilidade, autorização, validação de entrada, erros, liberação de recursos e consistência dos arquivos gerados. Analise cada fonte alterada no projeto SonarQube configurado com o escopo correto de teste ou produção; use parser/linter da stack nos formatos sem suporte. Não inclua credenciais ou artefatos temporários nos commits.
113
+
114
+ Os pacotes publicáveis são \`@gitpagedocs/tools\`, \`@gitpagedocs/mcp\` e \`@gitpagedocs/cli\`; raiz e frontend são privados. Sincronize versões, dependências internas e lockfile, inspecione os pacotes e conclua a validação antes do push. O workflow npm atual roda em pushes para main e publica em ordem de dependência quando a versão da CLI é nova. Confirme npm e Pages depois; um build local verde não equivale à publicação.
115
+ `,
116
+ };
@@ -1,3 +1,3 @@
1
- export const PACKAGE_VERSION = "0.0.9";
1
+ export const PACKAGE_VERSION = "0.0.10";
2
2
 
3
3
  export const DOC_VERSIONS = [PACKAGE_VERSION];
@@ -14,7 +14,7 @@ export function getDefaultSiteConfig(projectLink, languageToggles = buildLanguag
14
14
  ThemeDefault: "aurora-dark",
15
15
  ThemeModeDefault: "dark",
16
16
  ActiveNavigation: true,
17
- IconQuickNavigationReactIcones: false,
17
+ IconQuickNavigationReactIcones: true,
18
18
  IconQuickNavigationReactIconesTag: "FiSearch",
19
19
  IconQuickNavigationReactIconesTagColorDark: "currentColor",
20
20
  IconQuickNavigationReactIconesTagColorLight: "currentColor",
@@ -38,21 +38,41 @@ export function getDefaultSiteConfig(projectLink, languageToggles = buildLanguag
38
38
  enabled: true,
39
39
  narration: { enabled: true, defaultRate: 1, defaultVolume: 1 },
40
40
  },
41
- IconLanguageSelectorReactIcones: false,
41
+ IconLanguageSelectorReactIcones: true,
42
42
  IconLanguageSelectorReactIconesTag: "FiGlobe",
43
43
  IconLanguageSelectorReactIconesTagColorDark: "currentColor",
44
44
  IconLanguageSelectorReactIconesTagColorLight: "currentColor",
45
45
  IconLanguageSelectorReactIconesTagSize: "22px",
46
- IconThemeSelectorReactIcones: false,
46
+ IconThemeSelectorReactIcones: true,
47
47
  IconThemeSelectorReactIconesTag: "BsSunFill",
48
48
  IconThemeSelectorReactIconesTagColorDark: "currentColor",
49
49
  IconThemeSelectorReactIconesTagColorLight: "currentColor",
50
50
  IconThemeSelectorReactIconesTagSize: "22px",
51
- IconFocusModeReactIcones: false,
51
+ IconFocusModeReactIcones: true,
52
52
  IconFocusModeReactIconesTag: "MdFullscreen",
53
53
  IconFocusModeReactIconesTagColorDark: "currentColor",
54
54
  IconFocusModeReactIconesTagColorLight: "currentColor",
55
55
  IconFocusModeReactIconesTagSize: "22px",
56
+ IconPdfDownloadReactIcones: true,
57
+ IconPdfDownloadReactIconesTag: "FiDownload",
58
+ IconPdfDownloadReactIconesTagColorDark: "currentColor",
59
+ IconPdfDownloadReactIconesTagColorLight: "currentColor",
60
+ IconPdfDownloadReactIconesTagSize: "22px",
61
+ IconPdfOpenInNewTabReactIcones: true,
62
+ IconPdfOpenInNewTabReactIconesTag: "FiExternalLink",
63
+ IconPdfOpenInNewTabReactIconesTagColorDark: "currentColor",
64
+ IconPdfOpenInNewTabReactIconesTagColorLight: "currentColor",
65
+ IconPdfOpenInNewTabReactIconesTagSize: "22px",
66
+ IconDocumentPreviousReactIcones: true,
67
+ IconDocumentPreviousReactIconesTag: "FiChevronLeft",
68
+ IconDocumentPreviousReactIconesTagColorDark: "currentColor",
69
+ IconDocumentPreviousReactIconesTagColorLight: "currentColor",
70
+ IconDocumentPreviousReactIconesTagSize: "22px",
71
+ IconDocumentNextReactIcones: true,
72
+ IconDocumentNextReactIconesTag: "FiChevronRight",
73
+ IconDocumentNextReactIconesTagColorDark: "currentColor",
74
+ IconDocumentNextReactIconesTagColorLight: "currentColor",
75
+ IconDocumentNextReactIconesTagSize: "22px",
56
76
  FooterEnabled: true,
57
77
  FooterLinkName: "GitPageDocs",
58
78
  FooterLinkUrl: projectLink,
@@ -3,6 +3,7 @@ export const defaultLangMenu = {
3
3
  titleHeaderMenuPdf: "PDF",
4
4
  PdfDownload: "Baixar PDF",
5
5
  PdfOpenInNewTab: "Abrir PDF em nova aba",
6
+ PdfOpenError: "Não foi possível abrir o PDF. Verifique o arquivo, permita pop-ups e tente novamente.",
6
7
  PdfUnavailable: "A prévia do PDF depende do navegador. Use as ações disponíveis para abrir ou baixar o documento.",
7
8
  PdfDownloadError: "Não foi possível baixar o PDF. Tente abrir o documento em uma nova aba.",
8
9
  PdfDownloading: "Baixando PDF...",
@@ -25,6 +26,10 @@ export const defaultLangMenu = {
25
26
  typeToNavigate: "Digite para navegar...",
26
27
  noNavigationResults: "Nenhum resultado de navegacao.",
27
28
  focusMode: "Modo foco",
29
+ focusFirstDocument: "Primeiro documento",
30
+ focusLastDocument: "Último documento",
31
+ focusFirstSection: "Primeira seção",
32
+ focusLastSection: "Última seção",
28
33
  focusSectionsLabel: "Seções",
29
34
  focusDocumentsLabel: "Documentos",
30
35
  focusPreviousSectionLabel: "Seção anterior",
@@ -167,6 +172,7 @@ export const defaultLangMenu = {
167
172
  titleHeaderMenuPdf: "PDF",
168
173
  PdfDownload: "Download PDF",
169
174
  PdfOpenInNewTab: "Open PDF in a new tab",
175
+ PdfOpenError: "Could not open PDF. Check the file and allow pop-ups, then try again.",
170
176
  PdfUnavailable: "PDF preview depends on your browser. Use the available actions to open or download the document.",
171
177
  PdfDownloadError: "The PDF could not be downloaded. Try opening the document in a new tab.",
172
178
  PdfDownloading: "Downloading PDF...",
@@ -189,6 +195,10 @@ export const defaultLangMenu = {
189
195
  typeToNavigate: "Type to navigate...",
190
196
  noNavigationResults: "No navigation results.",
191
197
  focusMode: "Focus mode",
198
+ focusFirstDocument: "First document",
199
+ focusLastDocument: "Last document",
200
+ focusFirstSection: "First section",
201
+ focusLastSection: "Last section",
192
202
  focusSectionsLabel: "Sections",
193
203
  focusDocumentsLabel: "Documents",
194
204
  focusPreviousSectionLabel: "Previous section",
@@ -331,6 +341,7 @@ export const defaultLangMenu = {
331
341
  titleHeaderMenuPdf: "PDF",
332
342
  PdfDownload: "Descargar PDF",
333
343
  PdfOpenInNewTab: "Abrir PDF en una pestaña nueva",
344
+ PdfOpenError: "No se pudo abrir el PDF. Comprueba el archivo, permite ventanas emergentes e inténtalo de nuevo.",
334
345
  PdfUnavailable: "La vista previa del PDF depende del navegador. Usa las acciones disponibles para abrir o descargar el documento.",
335
346
  PdfDownloadError: "No se pudo descargar el PDF. Intenta abrir el documento en una pestaña nueva.",
336
347
  PdfDownloading: "Descargando PDF...",
@@ -353,6 +364,10 @@ export const defaultLangMenu = {
353
364
  typeToNavigate: "Escribe para navegar...",
354
365
  noNavigationResults: "Sin resultados de navegacion.",
355
366
  focusMode: "Modo foco",
367
+ focusFirstDocument: "Primer documento",
368
+ focusLastDocument: "Último documento",
369
+ focusFirstSection: "Primera sección",
370
+ focusLastSection: "Última sección",
356
371
  focusSectionsLabel: "Secciones",
357
372
  focusDocumentsLabel: "Documentos",
358
373
  focusPreviousSectionLabel: "Sección anterior",
@@ -0,0 +1,46 @@
1
+ export const MARKDOWN_MENU_SECTIONS = [
2
+ 1,
3
+ 2,
4
+ {
5
+ id: 1000,
6
+ titles: { en: "Guides", pt: "Guias", es: "Guías" },
7
+ submenus: [
8
+ {
9
+ id: 1001,
10
+ titles: { en: "Configure your site", pt: "Configure seu site", es: "Configura tu sitio" },
11
+ submenus: [13, 25, 16, 20],
12
+ },
13
+ {
14
+ id: 1002,
15
+ titles: { en: "Read and explore", pt: "Leia e explore", es: "Lee y explora" },
16
+ submenus: [22, 21, 24, 30],
17
+ },
18
+ {
19
+ id: 1003,
20
+ titles: { en: "Automate and integrate", pt: "Automatize e integre", es: "Automatiza e integra" },
21
+ submenus: [18, 19, 6],
22
+ },
23
+ ],
24
+ },
25
+ {
26
+ id: 1100,
27
+ titles: { en: "Operations and development", pt: "Operação e desenvolvimento", es: "Operación y desarrollo" },
28
+ submenus: [
29
+ {
30
+ id: 1101,
31
+ titles: { en: "Ship and maintain", pt: "Publique e mantenha", es: "Publica y mantén" },
32
+ submenus: [14, 26, 27, 17],
33
+ },
34
+ {
35
+ id: 1102,
36
+ titles: { en: "Develop the project", pt: "Desenvolva o projeto", es: "Desarrolla el proyecto" },
37
+ submenus: [15, 28, 3],
38
+ },
39
+ ],
40
+ },
41
+ {
42
+ id: 1200,
43
+ titles: { en: "Git and GitHub", pt: "Git e GitHub", es: "Git y GitHub" },
44
+ submenus: [5, 4],
45
+ },
46
+ ];
@@ -1,6 +1,7 @@
1
1
  /** Path and media mappings for doc versions */
2
2
 
3
3
  export const PDF_GUIDE_FILENAME = "gitpagedocs-project-guide.pdf";
4
+ export const HTML_DOOM_FILENAME = "doom.html";
4
5
 
5
6
  export const ROUTE_PATHS = {
6
7
  1: { pt: "getting-started.md", en: "getting-started.md", es: "getting-started.md" },
@@ -20,6 +21,11 @@ export const ROUTE_PATHS = {
20
21
  21: { pt: "accessibility.md", en: "accessibility.md", es: "accessibility.md" },
21
22
  22: { pt: "focus-mode.md", en: "focus-mode.md", es: "focus-mode.md" },
22
23
  24: { pt: "pdf.md", en: "pdf.md", es: "pdf.md" },
24
+ 25: { pt: "configuration-recipes.md", en: "configuration-recipes.md", es: "configuration-recipes.md" },
25
+ 26: { pt: "migration.md", en: "migration.md", es: "migration.md" },
26
+ 27: { pt: "troubleshooting.md", en: "troubleshooting.md", es: "troubleshooting.md" },
27
+ 28: { pt: "contributing.md", en: "contributing.md", es: "contributing.md" },
28
+ 30: { pt: "html-containers.md", en: "html-containers.md", es: "html-containers.md" },
23
29
  };
24
30
 
25
31
  export const VIDEO_IDS = ["bdIJkGr2NV0", "c67GaAkf1BE", "N3my6W_Rdwg", "r8jQ9hVA2qs"];
@@ -83,6 +83,36 @@ export const REFERENCE_ROUTE_METAS = {
83
83
  titles: { pt: "Documentos PDF", en: "PDF documents", es: "Documentos PDF" },
84
84
  descriptions: { pt: "Rotas, prévia, download e publicação de anexos PDF", en: "Routes, previews, downloads and publishing PDF attachments", es: "Rutas, vista previa, descarga y publicación de anexos PDF" },
85
85
  },
86
+ 25: {
87
+ titles: { pt: "Receitas de configuração", en: "Configuration recipes", es: "Recetas de configuración" },
88
+ descriptions: { pt: "Exemplos completos de configuração e seções aninhadas", en: "Complete configuration and nested-section examples", es: "Ejemplos completos de configuración y secciones anidadas" },
89
+ },
90
+ 26: {
91
+ titles: { pt: "Migração e compatibilidade", en: "Migration and compatibility", es: "Migración y compatibilidad" },
92
+ descriptions: { pt: "Atualize preservando conteúdo e personalizações", en: "Upgrade while preserving content and customizations", es: "Actualiza conservando contenido y personalizaciones" },
93
+ },
94
+ 27: {
95
+ titles: { pt: "Solução de problemas", en: "Troubleshooting", es: "Solución de problemas" },
96
+ descriptions: { pt: "Diagnostique configuração, publicação, PDF e integrações", en: "Diagnose configuration, deployment, PDF and integrations", es: "Diagnostica configuración, publicación, PDF e integraciones" },
97
+ },
98
+ 28: {
99
+ titles: { pt: "Contribuição e testes", en: "Contributing and testing", es: "Contribución y pruebas" },
100
+ descriptions: { pt: "Fontes autorais, contratos, testes e publicação", en: "Authoring sources, contracts, tests and releases", es: "Fuentes, contratos, pruebas y publicación" },
101
+ },
102
+ 30: {
103
+ titles: { pt: "Containers HTML", en: "HTML containers", es: "Contenedores HTML" },
104
+ descriptions: { pt: "Páginas HTML, URLs externas e o exemplo interativo DOOM", en: "HTML pages, external URLs and the interactive DOOM example", es: "Páginas HTML, URLs externas y el ejemplo interactivo DOOM" },
105
+ },
106
+ };
107
+
108
+ export const HTML_DOOM_META = {
109
+ id: 29,
110
+ titles: { pt: "DOOM: exemplo HTML", en: "DOOM: HTML example", es: "DOOM: ejemplo HTML" },
111
+ descriptions: {
112
+ pt: "Um container HTML com título, descrição e um jogo carregado apenas ao clicar.",
113
+ en: "An HTML container with a title, description and a game loaded only after clicking.",
114
+ es: "Un contenedor HTML con título, descripción y un juego que se carga solo al hacer clic.",
115
+ },
86
116
  };
87
117
 
88
118
  export const SOURCE_VIEWER_META = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitpagedocs/cli",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "CLI that scaffolds and maintains gitpagedocs documentation, generates docs with AI, configures GitHub Pages, and runs the MCP server.",
5
5
  "bin": {
6
6
  "gitpagedocs": "index.mjs"
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@clack/prompts": "^1.5.1",
32
- "@gitpagedocs/mcp": "^0.0.9",
33
- "@gitpagedocs/tools": "^0.0.9",
32
+ "@gitpagedocs/mcp": "^0.0.10",
33
+ "@gitpagedocs/tools": "^0.0.10",
34
34
  "tsx": "^4.21.0"
35
35
  },
36
36
  "repository": {
@@ -19,6 +19,11 @@ const DOC_FILE_KEYS = new Map([
19
19
  ["accessibility.md", "accessibility"],
20
20
  ["focus-mode.md", "focusMode"],
21
21
  ["pdf.md", "pdf"],
22
+ ["configuration-recipes.md", "configurationRecipes"],
23
+ ["migration.md", "migration"],
24
+ ["troubleshooting.md", "troubleshooting"],
25
+ ["contributing.md", "contributing"],
26
+ ["html-containers.md", "htmlContainers"],
22
27
  ]);
23
28
 
24
29
  export function parseDocFileToKey(fileName) {
@@ -28,6 +33,7 @@ export function parseDocFileToKey(fileName) {
28
33
  export function parseHtmlFileToKey(fileName) {
29
34
  const base = fileName.replace(/\.html$/, "");
30
35
  if (base === "source-viewer") return "sourceViewer";
36
+ if (base === "doom") return "doom";
31
37
  return undefined;
32
38
  }
33
39