sagadeck 1.8.0 → 1.10.0
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/README.md +25 -8
- package/SKILL.md +10 -3
- package/bin/sagadeck.js +23 -0
- package/docs/ANDAMENTO.md +482 -7
- package/docs/PLANO-MELHORIAS.md +180 -0
- package/docs/REFERENCIA.md +178 -111
- package/package.json +35 -4
- package/src/ai/commands.js +2 -2
- package/src/ai/context.js +7 -2
- package/src/ai/deck-ai.js +4 -2
- package/src/ai/ia-check.js +127 -0
- package/src/ai/ia-config.js +2 -2
- package/src/ai/llm.js +5 -1
- package/src/ai/map-analysis-run.js +1 -1
- package/src/ai/quality.js +1 -1
- package/src/ai/video-generation.js +70 -25
- package/src/api-client.js +42 -10
- package/src/build.js +46 -14
- package/src/code-highlight.js +19 -2
- package/src/code-language.js +13 -0
- package/src/elements.js +39 -1
- package/src/export/pptx.js +7 -2
- package/src/export/shots.js +7 -2
- package/src/fiscal/normalize.js +19 -0
- package/src/fs-retry.js +37 -2
- package/src/import/office.js +5 -4
- package/src/layouts.js +104 -99
- package/src/lessons.js +1 -1
- package/src/library.js +7 -7
- package/src/map-analysis.js +4 -1
- package/src/map-config.js +10 -4
- package/src/map.js +21 -8
- package/src/mcp/server.js +17 -0
- package/src/motion.js +20 -6
- package/src/purpose.js +1 -1
- package/src/runtime/api-core.js +122 -11
- package/src/runtime/api-ui.js +2 -1
- package/src/runtime/base.css +88 -332
- package/src/runtime/fit.js +3 -2
- package/src/runtime/fonts/amatic-sc.css +3 -0
- package/src/runtime/fonts/bebas-neue.css +2 -0
- package/src/runtime/fonts/cabin-sketch.css +2 -0
- package/src/runtime/fonts/fraunces.css +3 -0
- package/src/runtime/fonts/gelasio.css +3 -0
- package/src/runtime/fonts/ibm-plex-mono.css +4 -0
- package/src/runtime/fonts/index.json +10 -1
- package/src/runtime/fonts/itim.css +2 -0
- package/src/runtime/fonts/montserrat.css +2 -0
- package/src/runtime/fonts/space-grotesk.css +2 -0
- package/src/runtime/map-background.js +91 -0
- package/src/runtime/map.js +41 -9
- package/src/runtime/runtime.js +81 -100
- package/src/runtime/skins/aurora-dev.css +39 -0
- package/src/runtime/skins/caderno.css +33 -0
- package/src/runtime/skins/cartaz.css +27 -0
- package/src/runtime/skins/infografico.css +29 -0
- package/src/runtime/skins/lousa.css +22 -0
- package/src/runtime/skins/musgo.css +42 -0
- package/src/runtime/skins/terminal-pro.css +33 -0
- package/src/runtime/vendor/MAPLIBRE-LEAFLET-LICENSE.txt +15 -0
- package/src/runtime/vendor/MAPLIBRE-LICENSE.txt +116 -0
- package/src/runtime/vendor/geo-contornos.json +1 -1
- package/src/runtime/vendor/maplibre-gl.css +1 -0
- package/src/runtime/vendor/maplibre-gl.js +825 -0
- package/src/runtime/vendor/maplibre-leaflet.js +234 -0
- package/src/runtime/vendor/maplibre-worker.js +10 -0
- package/src/studio/ai-chat-route.js +26 -7
- package/src/studio/assets/imagens/tour-mapa-botao.jpg +0 -0
- package/src/studio/assets/imagens/tour-mapa-editor.jpg +0 -0
- package/src/studio/command-approval.js +2 -3
- package/src/studio/demo-decks.js +4 -2
- package/src/studio/developer-starters.js +46 -0
- package/src/studio/export-jobs.js +86 -0
- package/src/studio/exporting.js +36 -18
- package/src/studio/feature-demos.js +144 -0
- package/src/studio/ia-routes.js +9 -0
- package/src/studio/layout-samples.js +9 -18
- package/src/studio/library-routes.js +7 -9
- package/src/studio/project.js +1 -0
- package/src/studio/public/about.js +68 -0
- package/src/studio/public/ai-settings.js +2 -2
- package/src/studio/public/app.js +43 -52
- package/src/studio/public/chat.js +5 -1
- package/src/studio/public/developer-authoring.css +12 -0
- package/src/studio/public/developer-authoring.js +306 -0
- package/src/studio/public/export-status.js +154 -0
- package/src/studio/public/generation-guide.js +42 -0
- package/src/studio/public/index.html +31 -10
- package/src/studio/public/library.css +48 -3
- package/src/studio/public/library.html +5 -1
- package/src/studio/public/library.js +150 -41
- package/src/studio/public/map-data.js +7 -3
- package/src/studio/public/map-editor.js +625 -236
- package/src/studio/public/map-settings.js +3 -1
- package/src/studio/public/slide-form.js +27 -29
- package/src/studio/public/style.css +56 -9
- package/src/studio/public/ui-icons.js +1 -1
- package/src/studio/server.js +29 -14
- package/src/studio/snapshot.js +8 -4
- package/src/studio/template-collections.js +1 -1
- package/src/studio/tour.js +89 -7
- package/src/themes.js +202 -0
- package/templates/cenario-e-ciencia.yaml +1 -21
- package/templates/ensaio-api.yaml +3 -3
- package/templates/cenario/Texto no cen/303/241rio.yaml" +0 -171
- package/templates/cenario/imagens/cidade.svg +0 -30
- package/templates/cenario/imagens/pessoa.svg +0 -15
package/docs/ANDAMENTO.md
CHANGED
|
@@ -8,11 +8,253 @@ começar. Trabalho em curso vai para o GitHub (commit + push) a cada etapa, nunc
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## UX para programação e APIs com cURL — 12/10/2026 (branch `codex/ux-dev-slides`, versão 1.10.0)
|
|
12
|
+
|
|
13
|
+
Pedido: reduzir dificuldade de uso, facilitar geração técnica, acrescentar recursos e dois temas bonitos com
|
|
14
|
+
animação; testar, PR, merge, publicar no npm e atualizar sagadeck-dev. Trabalho somente na pasta oficial,
|
|
15
|
+
sem worktrees, conforme AGENTS.md. Main começou limpa em `46e0afd`, com a CI dos quatro ambientes verde.
|
|
16
|
+
|
|
17
|
+
Diagnóstico: recursos técnicos existiam, mas começar dependia de descobrir layouts, escrever briefing do zero e
|
|
18
|
+
preencher campos estruturados. cURL era exibido sem realce de sintaxe; demos extensas não eram uma base curta.
|
|
19
|
+
Mudanças:
|
|
20
|
+
- Biblioteca com entradas Programação/APIs com cURL; Nova com IA oferece exemplos de pedidos, material técnico
|
|
21
|
+
colado, público/objetivo/roteiro opcionais, resumo, prévia do pedido e Ctrl+Enter. Intenção explícita orienta o
|
|
22
|
+
modelo pelo prompt, sem regras de decisão por regex; texto e estilo manual continuam prioritários.
|
|
23
|
+
- Bases sem IA (`src/studio/developer-starters.js`), cinco slides com exemplo consistente, guia, saída e terminal
|
|
24
|
+
de cenas. Criação pela biblioteca; a de APIs usa ENSAIO e funciona localmente sem credenciais externas.
|
|
25
|
+
- Início/Inserir › Código / cURL: conteúdo colado vira código, código guiado ou requisição de API. Parser de
|
|
26
|
+
argumentos sem shell e sem executar; opções não suportadas geram mensagem antes de inserir. Credenciais
|
|
27
|
+
reconhecidas viram referências a Segredos antes de gravar. Código de exibição é preservado literalmente.
|
|
28
|
+
- Etapas guiadas por seleção de linhas, no modal e em Formatar; linguagem inferida/selecionável; realce offline
|
|
29
|
+
novo de Bash/cURL, JSON e SQL. Anexos de código/configuração preservam espaços, indentação e linhas em branco.
|
|
30
|
+
- `terminal-pro` (grafite/menta, IDE) e `aurora-dev` (azul noite/lilás/ciano, painéis e luz suave): fontes embutidas,
|
|
31
|
+
contraste de texto/sintaxe, rede de capa que para fora dela e em movimento reduzido/exportação. Design usa o
|
|
32
|
+
mesmo caminho existente de tema salvo; nenhum deck pessoal modificado.
|
|
33
|
+
|
|
34
|
+
Regressões cobrem parser, segredos, código literal, etapas e arquivos gravados, prompts ao LLM, anexos técnicos,
|
|
35
|
+
criação sem IA, escolha dos temas por teclado, contraste, animação, movimento reduzido e exportação. Testes
|
|
36
|
+
direcionados de motor/fontes/guards: 85 aprovados; temas e geração passaram também no navegador.
|
|
37
|
+
Geração com IA real também aprovada: briefing técnico aplica Aurora Dev e mantém o cURL original copiável (62 s).
|
|
38
|
+
Revisão independente achou e reproduziu perdas de inteiros grandes ao proteger JSON e de variáveis na codificação
|
|
39
|
+
do formulário: proteção agora edita só spans sensíveis do texto. Interpolação contextual opt-in
|
|
40
|
+
(`request.bodyEncoding`/`urlEncoding`) mantém JSON/form/query corretos no envio; ensaio HTTP real confere `&`, aspas,
|
|
41
|
+
barras, Unicode, números grandes e máscara de respostas/gravações. URL com Segredo agora é enviada já resolvida.
|
|
42
|
+
Callbacks de upload/geração são invalidados ao trocar/cancelar modal; Tab fica no diálogo e Escape devolve foco.
|
|
43
|
+
Essas regressões falharam antes das correções e passaram depois. Suíte completa iniciada com as frentes estáveis.
|
|
44
|
+
Entrega final aguardando suíte completa e CI; publicação de `sagadeck@1.10.0` por release com trusted publishing.
|
|
45
|
+
Oracle: atualizar apenas `/opt/sagadeck-dev`/`sagadeck-dev.service` (3518), preservando produção. Reiniciar também
|
|
46
|
+
a instância local verificada na 3517 e conferir versão/recursos depois da atualização.
|
|
47
|
+
Retomada em 13/10 após limite da sessão. Suíte inicial: 1.084 testes, 1.054 aprovados, 27 condicionais pulados e
|
|
48
|
+
3 falhas (uma de Python ausente no PATH, uma de rótulo e a contagem do teste pai). Python passou isolado com o
|
|
49
|
+
runtime disponível no PATH; a guarda de palavras grudadas agora reconhece o nome técnico cURL sem enfraquecer
|
|
50
|
+
os demais rótulos. A revisão final também cobre execução pelo navegador preservando corpo JSON literal e comandos
|
|
51
|
+
equivalentes copiáveis com segredos em JSON/form/query. Suíte final concluída: `npm test`, 1.093 testes,
|
|
52
|
+
1.066 aprovados, 27 condicionais pulados, zero falhas (24 min). Geradores de cURL/JavaScript/Python também
|
|
53
|
+
enviaram pedidos reais ao ensaio HTTP. Preview e Formatar mantêm JSON literal; respostas/gravações não permitem
|
|
54
|
+
recuperar segredos mesmo em logs com JSON aninhado. Instância local reiniciada na 3517, versão 1.10.0, com os novos
|
|
55
|
+
módulos/CSS respondendo 200. PR #197 publicado; os quatro checks originais Ubuntu/Windows, Node 22/24, passaram.
|
|
56
|
+
Por orientação posterior do usuário, o suporte passa a Node 24+: engines, instruções de instalação e matriz da
|
|
57
|
+
CI atualizados, sem mudança no código já aprovado. YAML e metadados conferidos; a nova CI exige Ubuntu e Windows
|
|
58
|
+
com Node 24 antes de merge/release. DEV da Oracle recebeu `135cfd2`, com versão 1.10.0 e ambos os temas disponíveis;
|
|
59
|
+
produção preservada. A publicação npm ainda aguarda merge e CI do commit final.
|
|
60
|
+
PR #197 integrado em `03f9ff4`; local na 3517 e DEV na 3518 reiniciados com esse commit e versão 1.10.0.
|
|
61
|
+
Os dois checks do PR passaram, mas a nova rodada da main encontrou uma corrida no teste de Formatar: o helper
|
|
62
|
+
confirmava a gravação no servidor antes de o formulário do novo slide terminar de renderizar, lendo o corpo
|
|
63
|
+
do slide anterior. Publicação npm suspensa até corrigir e validar essa sincronização. Correção na branch
|
|
64
|
+
`codex/ux-dev-format-sync`; nenhuma mudança no conteúdo das apresentações nem no código da aplicação.
|
|
65
|
+
Atrasar `api/render-slide` em 400 ms reproduziu exatamente a falha da Ubuntu. O helper agora aguarda a
|
|
66
|
+
identidade do formulário pelo campo Título, além da gravação; a mesma regressão passou após o ajuste.
|
|
67
|
+
Seis testes dirigidos aprovados, zero erros JavaScript e corpos JSON/form conferidos também no arquivo salvo.
|
|
68
|
+
Suíte completa após o ajuste: `npm test`, 1.093 testes, 1.066 aprovados, 27 condicionais pulados e zero falhas
|
|
69
|
+
(30 min). A falha da main ficou restrita a essa sincronização; Windows passou. Correção pronta para commit/PR
|
|
70
|
+
e checks Ubuntu/Windows Node 24 antes de integrar e publicar a versão 1.10.0.
|
|
71
|
+
|
|
72
|
+
## Assistente em prévia de modelo na Oracle — 12/10/2026
|
|
73
|
+
|
|
74
|
+
O erro `APP_UNKNOWN · a4670ccb` da produção era `path.dirname(null)` no preparo dos anexos: modelos abertos
|
|
75
|
+
pela vitrine ainda não têm arquivo. O pedido parava antes de chegar ao modelo. Agora o chat só prepara documentos
|
|
76
|
+
em uma pasta existente; documento binário, imagem gerada e edição materializam a cópia com os helpers da biblioteca.
|
|
77
|
+
Conversa simples continua sem criar arquivo. A aba do servidor e o endereço do editor passam a usar essa mesma
|
|
78
|
+
cópia, evitando edição perdida ou segunda cópia no pedido seguinte. Modelo de fábrica e outras pessoas preservados.
|
|
79
|
+
Regressão em `test/studio-ai-preview.test.js`: falhou antes com o erro exato; cobre conversa, edição salva,
|
|
80
|
+
recarregamento no navegador, isolamento por usuário e documento inventariado na pasta pessoal.
|
|
81
|
+
Imagem gerada também é conferida no arquivo e na pasta pessoal. Texto e visão reais passaram nos dois serviços.
|
|
82
|
+
A CI da main apresentou timeout no teclado ao mudar o título logo após abrir o editor no Windows 24; o teste da
|
|
83
|
+
biblioteca agora espera a página terminar de carregar antes de editar, mantendo a conferência do arquivo salvo.
|
|
84
|
+
Validação: npm test com 1.034 testes, 1.008 aprovados, 26 condicionais pulados, zero falhas; quatro regressões novas
|
|
85
|
+
passaram na suíte. O teste da biblioteca com a espera de carregamento passou também isolado (13 testes).
|
|
86
|
+
Entrega: commit da correção para os dois serviços da Oracle após validação local; merge do PR somente com os quatro
|
|
87
|
+
checks verdes (Ubuntu/Windows, Node 22/24). Não há mudança de dependências nem publicação de versão no npm.
|
|
88
|
+
PR #196 publicado. Oracle dev (3518) e produção (3517) receberam o commit `e32a3c1` e reiniciaram; nos dois,
|
|
89
|
+
o pedido real em uma prévia voltou com `mode: llm`, conversa, sem diagnóstico de erro e sem criar cópia.
|
|
90
|
+
Bibliotecas pessoais não foram alteradas. A CI do PR continua sendo acompanhada para concluir o merge.
|
|
91
|
+
Revisão adicional reproduziu perda ao recarregar quando o patch só mudava campos do deck (tema, contexto…) ou
|
|
92
|
+
excluía slides: a lista de slides alterados era vazia e a cópia não nascia. A materialização agora vale para toda
|
|
93
|
+
ação do modelo, preservando conversa e alternativas em prévia. Regressão confere tema salvo, exclusão e demais
|
|
94
|
+
slides preservados; falhou antes da correção.
|
|
95
|
+
Suíte completa após esse ajuste: 1.035 testes, 1.009 aprovados, 26 condicionais pulados e zero falhas.
|
|
96
|
+
Os cinco testes de prévia passaram; nova CI será exigida para o commit final antes do merge do PR #196.
|
|
97
|
+
Oracle dev e produção receberam também `333857f`: conversa real e mudança de tema pelo modelo funcionaram;
|
|
98
|
+
o tema permaneceu ao reabrir o arquivo pelas APIs nativas. Apresentações sintéticas removidas pela biblioteca.
|
|
99
|
+
A CI aprovou Ubuntu 22/24 e Windows 22. Windows 24 teve timeout na galeria; o teste isolado passou (3/3) e a
|
|
100
|
+
reexecução aprovou o carrossel, mas encontrou `ERR_NO_BUFFER_SPACE` durante exportação. Isso indica pressão de
|
|
101
|
+
recursos de rede no runner; a faixa TCP dinâmica agora é ampliada somente nas máquinas descartáveis da CI,
|
|
102
|
+
com diagnóstico de estados TCP em falhas. Testes e exigência de zero erros de navegador preservados.
|
|
103
|
+
Código da aplicação permanece o mesmo da suíte local completa aprovada (1.009/26/0); ajuste de CI validado como
|
|
104
|
+
YAML, e os quatro ambientes serão novamente conferidos antes do merge.
|
|
105
|
+
|
|
106
|
+
## Sobre legível no tema escuro — 12/10/2026 (branch `sobre-tema-escuro`)
|
|
107
|
+
|
|
108
|
+
Narumi (com print): no Windows e no dev da Oracle o Sobre "não abre direito", com texto apagado. Causa: o CSS do
|
|
109
|
+
`about.js` pegava o fundo de `--panel`/`--bg`, que nenhuma página define (caía no branco), e o texto de `--text`,
|
|
110
|
+
que no tema escuro é claro, o que dava contraste 1,16. Agora fundo, borda e botão vêm de `--chrome`, `--ui-line` e
|
|
111
|
+
`--brand-fill`, que o editor (style.css/studio-next.css) e a biblioteca (library.css) definem nos dois temas. Teste
|
|
112
|
+
novo em `test/sobre.test.js`: contraste WCAG mínimo de 4,5 do texto contra o fundo da janela, nos temas claro e
|
|
113
|
+
escuro, no editor e na biblioteca. Ele falha com o CSS antigo.
|
|
114
|
+
|
|
115
|
+
## Ajuda › Sobre o SagaDeck — 12/10/2026 (branch `ajuda-sobre`)
|
|
116
|
+
|
|
117
|
+
Narumi: "insira um help com about no menu onde eu posso ver a versão". A aba **Ajuda** fecha a faixa do editor
|
|
118
|
+
(depois de Avançado, como no PowerPoint) com Sobre o SagaDeck, O que mudou (CHANGELOG) e Demos. O Sobre
|
|
119
|
+
(`src/studio/public/about.js`, `window.SagaAbout`; qualquer elemento com `data-about` abre) mostra a versão em
|
|
120
|
+
destaque, commit, Node e sistema (novos em `/api/instance`), desde quando está no ar, a biblioteca (no multiusuário,
|
|
121
|
+
só que é do servidor) e se a IA está configurada, com Copiar informações para suporte. Na biblioteca, um botão com o
|
|
122
|
+
ícone de informação no alto. Achados de passagem: o `dialog` nativo abria colado no canto (uma regra global zerava
|
|
123
|
+
a margem; o Sobre põe `margin:auto`) e botão da faixa que é link (`a.rbtn`) saía sublinhado. Teste:
|
|
124
|
+
`test/sobre.test.js`; a ordem da faixa em `studio.test.js`.
|
|
125
|
+
|
|
126
|
+
## `sagadeck ia-check`: o que de IA funciona, sem tela — 12/10/2026 (branch `ia-check`)
|
|
127
|
+
|
|
128
|
+
Narumi: "o sagadeck está preparado para ser testado por um agente de IA (tipo o Copilot) sem o front-end?
|
|
129
|
+
Principalmente a execução dos modelos: preciso saber rapidamente quais features de IA funcionam". Não estava: só o
|
|
130
|
+
Testar do Configurar IA (uma pergunta de texto) e os testes ao vivo, que avaliam decisões e levam minutos.
|
|
131
|
+
- `src/ai/ia-check.js` (`iaCheck`): texto, visão, imagem, pesquisa e vídeo em paralelo, prazo próprio por recurso,
|
|
132
|
+
cada resultado avisado ao chegar. Visão com prova: um PNG de duas faixas de cor sorteadas, desenhado no código; o
|
|
133
|
+
modelo precisa dizer as cores na ordem, e modelo que não aceita imagem falha (o `chat` refazia sem a imagem e dava
|
|
134
|
+
"ok" sem ver). Pesquisa: a data de hoje. Imagem: confere o tipo pelos bytes e grava o arquivo.
|
|
135
|
+
- Vídeo: Narumi primeiro quis a geração real sempre, depois decidiu: padrão sem custo (catálogo, status `sem_prova`,
|
|
136
|
+
que não conta como ok) e `--video-real` quando ela pedir (clipe mais curto e leve que o modelo aceita, baixa e confere
|
|
137
|
+
o MP4).
|
|
138
|
+
- No caminho, a pergunta dela ("o teste usa a chave do OpenRouter? o setup dos modelos não é uma camada separada?")
|
|
139
|
+
expôs que o vídeo ficava fora da camada da IA: endereço do OpenRouter no código e chave só em variável. Agora
|
|
140
|
+
`videoSetup` (`video-generation.js`): com modelo de vídeo em Configurar IA (papel novo `video`), usa endereço, chave,
|
|
141
|
+
cabeçalhos e adaptador de lá; sem ele, o comportamento antigo (Oracle e quem já usava). A consulta e o download só
|
|
142
|
+
levam a chave ao mesmo servidor configurado (`videoApiURL`). O catálogo virou opcional.
|
|
143
|
+
- Saídas: `sagadeck ia-check` (`--rapido`, `--so`, `--video-real`, `--json`, código de saída), ferramenta MCP
|
|
144
|
+
`sagadeck_ia_check`, `POST /api/ia/check` (fora do multiusuário). SKILL.md manda o agente rodar antes de prometer
|
|
145
|
+
recurso de IA.
|
|
146
|
+
- Medido nesta máquina contra o OpenRouter: texto, visão e pesquisa em 2,3 s (`--rapido`); com imagem, 8 a 11 s.
|
|
147
|
+
- Teste `test/ia-check.test.js` (LLM falso e provedor de vídeo simulado: cada falha com o motivo, paralelismo, vídeo
|
|
148
|
+
pela camada da IA, linha de comando). Achado: o `spawnSync` do teste da linha de comando travava o LLM falso do
|
|
149
|
+
próprio processo, e o teste só passava por estourar o prazo; virou `execFile` e exige o motivo certo.
|
|
150
|
+
- Flake corrigido: `studio.test.js` procurava "ocr" no slide inteiro e o uid sorteado `s1ocrpz0ieql` derrubou a CI da
|
|
151
|
+
`main` depois do #191.
|
|
152
|
+
|
|
153
|
+
## Demos de um assunto só: mapas, programação e APIs com curl — 11/10/2026 (branch `demos-recursos`)
|
|
154
|
+
|
|
155
|
+
Narumi: em vez do demo inchado que faz tudo (o Conheça o SagaDeck), uma demo só de mapas, uma de programação e uma de
|
|
156
|
+
curl. Entraram em `src/studio/feature-demos.js` (`demoDeck('mapas' | 'programacao' | 'apis')`, `FEATURE_DEMO_NAMES`)
|
|
157
|
+
e vão primeiro na vitrine e em Demos oficiais; o Conheça continua lá, depois delas.
|
|
158
|
+
- **Mapas** (tema oceano): reaproveita as demos de mapa do tour (`mapDemos`, agora exportada) em três partes:
|
|
159
|
+
mostrar, calcular, editar; a cópia leva as capturas do Editar mapa (`demoAssets`).
|
|
160
|
+
- **Programação** (tema musgo, terminal de cenas na capa): código destacado, guiado, consulta, código explorável,
|
|
161
|
+
algoritmo, dois terminais, duelo de commits, code review, diagrama de sequência e rede explorável.
|
|
162
|
+
- **APIs com curl** (tema wine): a anatomia de um curl (código guiado), chamadas ao vivo abertas na aba curl (POST,
|
|
163
|
+
GET com consulta, com token, polling, streaming) na API de mentira do Studio (ENSAIO), as opções do dia a dia em
|
|
164
|
+
cartões que viram e o aviso do token.
|
|
165
|
+
- Teste: `test/demos-recursos.test.js` (montam sem aviso, cada uma só do seu assunto, e cada chamada da de curl
|
|
166
|
+
funciona contra a API de mentira); a ordem nova da vitrine em `library-ui.test.js`.
|
|
167
|
+
- **Revisão de todas as demos** (Narumi: "mantenha só o que fizer sentido"). Ficam na vitrine e em Demos oficiais:
|
|
168
|
+
mapas, programação, APIs com curl, Conheça o SagaDeck, aula de hidráulica, aula de algoritmos e diagramas vivos.
|
|
169
|
+
Saíram: **Explore uma ideia** ("Uma pergunta, vários caminhos", não demonstrava nada claro), **Novidades** (colcha
|
|
170
|
+
de retalhos; o slide da planilha dependia de um arquivo que a prévia não tem, e a aba Arquivos aparecia vazia),
|
|
171
|
+
**Material de consulta** e **Recursos avançados** (quase iguais, com cartões genéricos; a consulta está na de
|
|
172
|
+
programação) e **Aula de APIs ao vivo** (fica uma demo de API só, a de curl; o ensaio completo continua no
|
|
173
|
+
`sagadeck ensaio-api`). Os decks dessas demos continuam no código porque os testes os usam como material
|
|
174
|
+
(código denso, arquivos do projeto, exploração); só não aparecem mais. O teste de ponta a ponta da vitrine com
|
|
175
|
+
o ENSAIO agora abre a de curl, vira cópia e executa corpo, consulta e token no Studio.
|
|
176
|
+
|
|
177
|
+
## Temas de infográfico, cartão que vira e botão + — 11/10/2026 (branch `temas-cartoes`, sobre `tema-musgo`)
|
|
178
|
+
|
|
179
|
+
Pedido da Narumi, com prints de modelos de infográfico interativo: uma variante do musgo com outra paleta e os
|
|
180
|
+
visuais dos prints, com destaque para o cartão que gira no clique e mostra o verso. Entrou:
|
|
181
|
+
- **`wine`**: o musgo em vinho (vermelho-rosado, rosé, vermelho forte só no detalhe). Usa a pele do musgo por
|
|
182
|
+
`skin: "musgo"` (o `build.js` lê a pele do outro e troca o seletor); fontes em `MUSGO_FACES`.
|
|
183
|
+
- **`caderno`** (visual thinking: Amatic SC + Gelasio, cartões com moldura pastel, rabiscos de ícones Lucide como
|
|
184
|
+
máscara), **`lousa`** (giz: Cabin Sketch + Itim), **`cartaz`** (protesto: Bebas Neue em faixas vermelhas tortas) e
|
|
185
|
+
**`infografico`** (dados chapados: Bebas Neue + Montserrat). Fontes OFL em `vendor-fonts.mjs`.
|
|
186
|
+
- **Cartão que vira** (`flip` no cartão; `back` já era o Voltar da navegação e o verificador de links lia o verso como destino; `elements.js` `flipCard`, `base.css`, `runtime.js`): frente e verso na mesma
|
|
187
|
+
célula, clique/Enter gira, sair do slide desvira; exportação mostra a frente.
|
|
188
|
+
- **Botão + com balão** (`pop` em qualquer lugar; `more` no marco da linha do tempo): abre o balão e escurece o resto
|
|
189
|
+
com uma sombra enorme em volta do botão; um de cada vez, fecha fora e ao trocar de slide.
|
|
190
|
+
- **Defeito achado:** o ajuste para caber (`fit.js`) via o texto do verso "por cima" do da frente e encolhia o slide
|
|
191
|
+
inteiro; verso e balão saem dessa conta.
|
|
192
|
+
- Teste do arranjo único por tema aceita o tema irmão (`skin`). Testes: `test/temas-infografico.test.js`.
|
|
193
|
+
|
|
194
|
+
## Tema musgo, faixa que corre e terminal em cenas — 11/10/2026 (branch `tema-musgo`)
|
|
195
|
+
|
|
196
|
+
Pedido da Narumi: trazer para o sagadeck o visual de uma página que ela adorou (um site de "segundo cérebro" gerado
|
|
197
|
+
por outro modelo): tema, cores, fontes, botões, o terminal que digita os `curl`, a faixa que fica correndo e o
|
|
198
|
+
separador das seções. Entrou:
|
|
199
|
+
- **Tema `musgo`** (`src/themes.js`, `src/runtime/skins/musgo.css`): verde quase preto com grão, âmbar e sálvia;
|
|
200
|
+
Fraunces (com tamanho óptico e itálico de verdade), Space Grotesk e IBM Plex Mono, embutidas (OFL, `vendor-fonts.mjs`
|
|
201
|
+
agora aceita estilo itálico). PPTX com Georgia, Segoe UI e Cascadia Mono. Capa e seção com grade de pontos que some
|
|
202
|
+
nas bordas, luz âmbar na capa, chapéu com fio âmbar, destaque do título em âmbar itálico (sem marca-texto), seção
|
|
203
|
+
como separador (número entre fios na linha do chapéu, título grande embaixo), cartões vazados que sobem no mouse,
|
|
204
|
+
números em monoespaçada, marcador em losango, código em janela e botões âmbar.
|
|
205
|
+
- **Decisão:** no musgo o tom `accent` (o padrão da seção) é escuro com detalhe em âmbar; a página chapada de âmbar
|
|
206
|
+
destoava do original.
|
|
207
|
+
- **Faixa que corre** (`ticker`, `src/build.js` + `base.css`): só na capa; automática nos temas com `ticker: true`
|
|
208
|
+
(por enquanto o musgo), com os títulos das seções (ou dos slides, se houver menos de 3 seções); `ticker: [..]` em
|
|
209
|
+
qualquer tema; `ticker: false` desliga. Separador desenhado em CSS (losango), parada sem movimento e na exportação.
|
|
210
|
+
- **`motion: {type: console}`** (`src/motion.js`): janela com três bolinhas, legenda e contador; cada cena digita o
|
|
211
|
+
comando e revela a saída linha a linha, segura a leitura e passa para a próxima. Prompt, cursor e seta em CSS
|
|
212
|
+
(regra de não usar caractere como ícone). Parado, mostra a primeira cena completa.
|
|
213
|
+
- **`ambient: rede`** (`runtime.js`, `mountAmbientNet`): nós à deriva que se ligam por proximidade, num canvas no
|
|
214
|
+
tamanho lógico do slide, nas cores do tom; anda só no slide atual, um quadro parado sem movimento/exportação. O tema
|
|
215
|
+
pode pôr na capa sozinho (`coverAmbient`, o musgo põe); `ambient: false` tira. Também no formulário do Studio.
|
|
216
|
+
- Testes: `test/tema-musgo.test.js`. Referência atualizada (tema, `ticker`, `console`, `rede`).
|
|
217
|
+
|
|
218
|
+
Fica para depois, se ela pedir: o efeito de "decodificar" a palavra em destaque do título da capa (trocar letras
|
|
219
|
+
mexe na largura e na quebra das linhas; precisa de um jeito que não faça o título pular).
|
|
220
|
+
|
|
221
|
+
## 11/10/2026 — Fases 0+1 do plano de melhorias (branch `arena/349f2d88-sagadeck`)
|
|
222
|
+
|
|
223
|
+
Veio de uma avaliação do repositório pedida pela Narumi: o plano está em `docs/PLANO-MELHORIAS.md`
|
|
224
|
+
(criado antes desta etapa; continua valendo para as fases 2+). Entrou o que é seguro e não muda
|
|
225
|
+
comportamento do gerador:
|
|
226
|
+
|
|
227
|
+
- **Suíte verde em qualquer máquina**: seis testes que exercitam o navegador por dentro (foco guiado,
|
|
228
|
+
`materializeImages` com `image_ref`, "ver o material", rótulos do redesenho) falhavam fora do CI, que
|
|
229
|
+
tem Chrome; agora pulam com o aviso dos testes de UI (`skipWithoutBrowser` em `test/helpers.js`).
|
|
230
|
+
- **`engines` corrigido**: era `>=18` e não se cumpria (`pdfjs-dist` 6 pede 22.13+/24, `playwright-core`
|
|
231
|
+
pede 20+). Agora `>=22.13.0`, README e SKILL a par; CI testa Node 22 e 24 no Linux e no Windows.
|
|
232
|
+
- **Audit de dependências na CI** (informativo) + **Dependabot semanal** agrupado; vulnerabilidade de
|
|
233
|
+
`image-size` (dependência morta declarada pelo pptxgenjs — o bundle nunca a importa) resolvida com
|
|
234
|
+
`overrides` para 2.0.4: audit em zero, suíte passando, nenhum código do gerador tocado.
|
|
235
|
+
- `CHANGELOG.md` começado (o histórico fino continua sendo este diário), `.editorconfig`, e
|
|
236
|
+
`keywords`/`homepage`/`bugs` no `package.json`.
|
|
237
|
+
- **Flake do CI no Windows consertado, e era mais sério do que parecia** ("mover (pasta inteira...), renomear
|
|
238
|
+
e duplicar"): a CI desta branch começou a falhar às vezes no Windows e o passo de falha do workflow (novo)
|
|
239
|
+
apontou o teste; o bloco de erro trouxe `exitCode 3221226505` (0xC0000409, morte nativa). Causa-raiz:
|
|
240
|
+
`fs.cpSync`/`fs.rmSync` recursivos têm código nativo que no Windows mata o processo ou copia/apaga NADA
|
|
241
|
+
com caminho acentuado (nodejs/node#54476, #61878 — "cópia", "Relatório" são a norma aqui). Só apareceu
|
|
242
|
+
porque a matrix nova testa Node 22 no Windows (main só testava 24, que passa por sorte de versão).
|
|
243
|
+
Conserto: `copyRetry`/`removeRetry` caminham na mão (readdir/copyFile/unlink/rmdir) e toleram o
|
|
244
|
+
travamento de um instante; testes de trava simulada (falham sem o conserto) e trava estrutural contra
|
|
245
|
+
`fs.cpSync`/`fs.rmSync` recursivo cru. Também protege a Studio de morte súbita ao duplicar/apagar deck.
|
|
246
|
+
|
|
247
|
+
O que ficou para depois (mesmo plano, fases 2+): lint/format com adoção gradual, `@ts-check` nos módulos
|
|
248
|
+
puros, extração dos prompts para arquivos, divisão do `app.js` do Studio, CI paralela por família de
|
|
249
|
+
teste, redimensionador de imagem sem navegador.
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
11
253
|
## Próximas frentes (levantadas em 08/10/2026, ainda não começadas)
|
|
12
254
|
|
|
13
255
|
**Para quem pega isto numa sessão nova, sem a conversa de origem.** O projeto é o **sagadeck**:
|
|
14
256
|
- Repositório GitHub `naruminho/sagadeck`, clonado em `C:\Users\narum\src\sagadeck`, branch `main`.
|
|
15
|
-
- Publicado no npm como `sagadeck` (1.
|
|
257
|
+
- Publicado no npm como `sagadeck` (1.8.0: mapas ao vivo, editor, dados e análises pela IA; o PyPI parou na 1.5.0).
|
|
16
258
|
- Ferramenta Node (ESM) que transforma apresentações escritas em YAML em HTML/PPTX.
|
|
17
259
|
- Tem um editor web, o Studio (`sagadeck studio`, porta 3517).
|
|
18
260
|
- Tem uma IA embutida (provedor direto, configurado em `~/.sagadeck/ia.json` pela tela Configurar IA) que cria e edita decks, inclusive a partir de PDFs de
|
|
@@ -42,7 +284,7 @@ datadas abaixo). O resto fica para depois e só entra se for pedido. Antes de co
|
|
|
42
284
|
ler o conteúdo força o download. Conferir se listar a biblioteca (`openLibrary`, `/api/library`) lê o YAML de
|
|
43
285
|
cada deck; se lê, listar só pelo nome/metadado e abrir o conteúdo sob demanda.
|
|
44
286
|
|
|
45
|
-
## Frente: mapa (planejada em 10/10/2026,
|
|
287
|
+
## Frente: mapa (planejada e publicada em 10/10/2026, versão 1.8.0)
|
|
46
288
|
|
|
47
289
|
Pedido de Narumi, depois de muita conversa. **Leia antes de mexer.** Recurso de nicho, mas completo: mostrar e
|
|
48
290
|
explicar algo geográfico (pontos de interesse de qualquer tipo, linhas, áreas), com a IA montando a partir de dados.
|
|
@@ -138,17 +380,250 @@ Não é um QGIS: análise pesada fica lá; aqui é apresentar bem, com contas si
|
|
|
138
380
|
de altura zero). Testes: `test/map-analysis.test.js` e o ao vivo "qual loja fica mais perto de cada pedido" (pede
|
|
139
381
|
`mais_proximo`).
|
|
140
382
|
|
|
141
|
-
**Publicação 1.8.0 (
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
383
|
+
**Publicação 1.8.0 (concluída em 10/10):** as cinco entregas e o Conheça o SagaDeck entraram na `main` pelos
|
|
384
|
+
PRs #178 e #179, nessa ordem, ambos com CI verde no Ubuntu e no Windows. A CI da `main` (run 38055530334)
|
|
385
|
+
também passou nas duas máquinas no commit `1b05819`. A release `v1.8.0` aponta para esse commit; o workflow
|
|
386
|
+
`publish` (run 38057571606) publicou `sagadeck@1.8.0` no npm com provenance.
|
|
387
|
+
|
|
388
|
+
O registro passou a informar `latest: 1.8.0`; esta máquina foi atualizada com `npm install -g sagadeck@1.8.0`.
|
|
389
|
+
O Studio anterior da porta 3517 foi verificado e substituído pelo da versão nova, na mesma porta.
|
|
390
|
+
Conferido em `http://127.0.0.1:3517/api/instance`: versão 1.8.0, biblioteca local; IA configurada,
|
|
391
|
+
configuração do mapa editável e nenhum aviso de código antigo.
|
|
392
|
+
|
|
393
|
+
No Oracle, por decisão de Narumi, **produção permanece na 1.7.1**, em `/opt/sagadeck`, porta 3517, sem reinício.
|
|
394
|
+
O dev tem código próprio em `/opt/sagadeck-dev`, branch local `dev`, agora na tag `v1.8.0`; somente
|
|
395
|
+
`sagadeck-dev.service` foi reiniciado, na porta 3518. Versão e configuração reservada conferidas pela API;
|
|
396
|
+
IA configurada e arquivos do mapa servidos. A rota real pelo OpenRouteService já havia sido conferida nessa
|
|
397
|
+
mesma versão pelo Claude. O ambiente e os dois `mapa.json` usam `OPENROUTESERVICE_API_KEY`, com modo 600 e
|
|
398
|
+
dono de cada serviço. A separação do código do dev e o guia do mapa no servidor entraram pelos PRs #100 e #99
|
|
399
|
+
do oráculo, respectivamente; não precisam ser refeitos.
|
|
400
|
+
|
|
401
|
+
A CI intermediária da `main`, após o #178, teve um erro de recursos do navegador no Windows
|
|
402
|
+
(`ERR_NO_BUFFER_SPACE`, no teste da faixa de ferramentas). O teste isolado local passou; a repetição dessa CI
|
|
403
|
+
foi cancelada pela entrada do #179. As CIs posteriores do #179 e da `main` passaram completas nas duas máquinas,
|
|
404
|
+
sem filtros de erro nem alterações para esconder a falha.
|
|
405
|
+
|
|
406
|
+
Os quatro testes de mapa com o modelo real passaram novamente. Suíte completa da 1.8.0: 982 testes,
|
|
146
407
|
956 passaram, 26 pulados, zero falhas; mapa/editor/exportação/leitores e regras: 22 testes direcionados passaram.
|
|
147
408
|
Na revisão com cliques reais, a planilha cobria o mapa inteiro e a legenda interceptava um ponto no enquadramento
|
|
148
409
|
automático. Corrigidos: a planilha fica ao lado do mapa (sugestões de gráfico recolhidas, com botão para abrir), a
|
|
149
410
|
seleção funciona nas duas direções e o enquadramento reserva espaço para a legenda. O teste reproduziu a obstrução
|
|
150
411
|
antes da correção e agora clica no ponto e na célula, sem disparar eventos sintéticos.
|
|
151
412
|
|
|
413
|
+
## Assistente em destaque — 11/10/2026
|
|
414
|
+
|
|
415
|
+
Pedido de Narumi: o chat não deve ficar perdido entre as propriedades. O acesso ao Assistente fica separado
|
|
416
|
+
do grupo Formatar/Propriedades/Variáveis, por último à direita, com o nome sempre visível e aberto por padrão.
|
|
417
|
+
Os controles de edição mantêm nomes acessíveis e dicas; esse arranjo preserva espaço para o slide. Quem fechou
|
|
418
|
+
o painel continua sendo respeitado. O atalho flutuante aparece para reabrir o painel fechado; com ele aberto,
|
|
419
|
+
o botão fixo já dá acesso ao Assistente, inclusive a avisos de novas respostas.
|
|
420
|
+
|
|
421
|
+
Teste reproduziu a ordem antiga e passou com a nova: clique real nas quatro opções em temas claro/escuro e
|
|
422
|
+
larguras 1280, 1024 e 390, sem corte do cabeçalho, nome do Assistente visível, seleção acessível correta,
|
|
423
|
+
rascunho preservado, ordem de teclado, troca de slide mantendo o chat e apresentação salva intacta.
|
|
424
|
+
Os testes do atalho e da faixa/painel também passaram, com zero erros de JavaScript.
|
|
425
|
+
Conferência visual da interface real em tela grande e celular, nos dois temas: campo e envio acessíveis, sem erros de JavaScript. Suíte completa: 1001 testes, 975 passaram, 26 pulados, zero falhas e encerramento normal em 28 min 18 s. A CI Ubuntu/Windows precede o merge. Pasta oficial, branch `codex/assistente-visivel`.
|
|
426
|
+
|
|
427
|
+
## Correções visuais da demo — 11/10/2026
|
|
428
|
+
|
|
429
|
+
Pedidos de Narumi por capturas de tela: rótulos brancos cobriam o mapa; fórmula de Reynolds em cima do resultado;
|
|
430
|
+
capital em reais aparecia como código LaTeX no exercício resolvido.
|
|
431
|
+
|
|
432
|
+
- Rótulos do mapa têm fundo transparente, sem caixa ou sombra retangular, com contorno leve só no texto. O estilo
|
|
433
|
+
tem prioridade sobre o CSS do Leaflet, que carrega depois; o rótulo não intercepta cliques. Conferido em temas
|
|
434
|
+
claro e escuro, com os nomes preservados e clique real no ponto.
|
|
435
|
+
- A calculadora reserva altura e respiro para a fração, sem sobrepor o resultado. Os nomes das faixas ficam visíveis
|
|
436
|
+
abaixo da régua, mantendo suas posições e as pontas arredondadas. No PPTX, controles deslizantes são capturados
|
|
437
|
+
com trilho e marcador: antes viravam retângulos brancos, sem representar o valor atual. A linha do resultado
|
|
438
|
+
também usa o tamanho do número: o PPTX antes reservava 9,6 pt para uma fonte de 38 pt, causando sobreposição.
|
|
439
|
+
O teste confere a altura exportada e preserva o resultado como texto editável; o ajuste de altura vale também
|
|
440
|
+
para o modo compacto. A suíte apontou um excesso de 3 px no exemplo com oito resultados; o modo compacto usa
|
|
441
|
+
uma linha do tamanho da fonte, sem a folga extra do modo comum, e o teste existente de controles/explicação
|
|
442
|
+
visíveis passou novamente.
|
|
443
|
+
- A conferência da demo completa no PPTX revelou outra causa da régua desformatada: o exportador agrupava filhos
|
|
444
|
+
posicionados como texto de uma única caixa. Agora cada faixa e cada rótulo conserva sua própria posição e fundo;
|
|
445
|
+
as três cores e os dois nomes editáveis são conferidos no arquivo real, comparando com as posições do navegador.
|
|
446
|
+
O teste falhou com o agrupamento antigo e passou após a correção, junto com os demais testes de PowerPoint.
|
|
447
|
+
- Unidades que já contêm `\$` ou `\%` não são escapadas duas vezes pelo motor. O exemplo de juros mantém seus
|
|
448
|
+
dados, etapas e resposta; a moeda compila em vez de aparecer como erro vermelho. Apresentações pessoais não foram
|
|
449
|
+
editadas.
|
|
450
|
+
|
|
451
|
+
Regressões reproduzidas antes das correções: fundo opaco do rótulo, sobreposição/corte na calculadora, unidade já
|
|
452
|
+
escapada inválida e ausência dos controles no PPTX. Testes direcionados passaram. Conferência visual dos modelos
|
|
453
|
+
e PPTX real de três slides: zero erros de JavaScript, dois controles completos no arquivo. Suíte completa concluída:
|
|
454
|
+
999 testes, 973 passaram, 26 pulados, zero falhas, encerramento normal em 21 min 13 s. A suíte final, incluindo
|
|
455
|
+
a régua, concluiu com 1000 testes: 974 passaram, 26 pulados, zero falhas, encerramento normal em 22 min 11 s.
|
|
456
|
+
A demo completa atualizada foi gerada pelo Studio em 61 s e baixada com 85 slides; conferidas as três faixas
|
|
457
|
+
coloridas e os dois nomes em caixas editáveis separadas no PPTX. O PR #184 segue a CI Ubuntu/Windows antes do
|
|
458
|
+
merge e atualização local/dev. A CI da main 38135963264 teve erro `ERR_NO_BUFFER_SPACE` do Chrome no Windows no teste
|
|
459
|
+
da aula de APIs; o fluxo foi concluído, mas a exigência de zero erros apontou o erro de rede. O teste passou
|
|
460
|
+
novamente nesta máquina e o job do Windows foi reexecutado, sem relaxar a verificação: concluiu verde em 29 min 51 s,
|
|
461
|
+
junto com o Ubuntu verde em 23 min 55 s. Produção do Oracle fica na 1.7.1.
|
|
462
|
+
|
|
463
|
+
## Exportação com progresso e download posterior — 10/10/2026
|
|
464
|
+
|
|
465
|
+
Pedido: ao baixar a demo como PowerPoint, não ficava claro se estava gerando, tinha falhado ou já havia terminado.
|
|
466
|
+
Na biblioteca, o aviso sumia após seis segundos; no editor, não havia progresso e o aviso prometia poucos segundos.
|
|
467
|
+
|
|
468
|
+
Editor e biblioteca agora usam uma fila no servidor (`src/studio/export-jobs.js`, `/api/export/jobs`), acompanhada
|
|
469
|
+
por `export-status.js`: preparação, slide atual/total, conclusão do arquivo, tempo decorrido, erro persistente e
|
|
470
|
+
**Pronto para baixar**. Fechar/recarregar a aba não interrompe a geração. Ao voltar à biblioteca ou ao editor, a
|
|
471
|
+
lista reaparece; a aba que pediu tenta iniciar o download quando pronto, e o botão permite baixar novamente.
|
|
472
|
+
O arquivo fica fora da biblioteca/nuvem por até 24 h, enquanto o processo do Studio estiver ligado; mantêm-se
|
|
473
|
+
as dez exportações recentes de cada pessoa. O status e o arquivo só são acessíveis à mesma pessoa no multiusuário.
|
|
474
|
+
Uma geração por vez limita Chrome/memória; pedidos repetidos em andamento reaproveitam a geração existente.
|
|
475
|
+
|
|
476
|
+
PPTX, PDF, roteiro, material de estudo e Baixar tudo informam etapas reais. Os links antigos e compartilhados
|
|
477
|
+
continuam respondendo com o arquivo. Exportar um modelo em prévia não cria uma cópia na biblioteca. Se salvar
|
|
478
|
+
mudanças falha, o editor interrompe a exportação e mantém a mensagem, em vez de gerar a versão antiga.
|
|
479
|
+
Não foi acrescentado envio de email: a demo oficial de 85 slides terminou em 42 s nesta máquina (44 s até o
|
|
480
|
+
download pelo clique na UI), com os 85 slides no PPTX, zero erros de JavaScript no Studio e nenhuma cópia criada.
|
|
481
|
+
|
|
482
|
+
Regressão inicial: o pedido assíncrono retornava 404, sem fila nem arquivo recuperável. Testes verificam progresso,
|
|
483
|
+
PPTX real com textos e notas, fechamento da aba e recuperação pela biblioteca, falha persistente, bloqueio após
|
|
484
|
+
erro ao salvar, deduplicação, expiração e isolamento entre pessoas. Suíte completa concluída em 11/10:
|
|
485
|
+
995 testes, 969 passaram, 26 pulados, zero falhas, encerramento normal. O PR #183 entrou na `main` em 11/10
|
|
486
|
+
(`8ff7005`), depois da CI 38133476972 concluir verde no Ubuntu (23 min 59 s) e no Windows (32 min 34 s).
|
|
487
|
+
O Oracle dev foi atualizado para esse commit; geração assíncrona e download real de 17 slides conferidos em 7,5 s.
|
|
488
|
+
Produção do Oracle permanece na 1.7.1, sem atualização nem reinício.
|
|
489
|
+
Uma resposta atrasada de uma consulta anterior podia apagar o acompanhamento de um pedido novo e impedir o download
|
|
490
|
+
automático: reproduzido com a resposta retida, agora só expiram gerações que a consulta já conhecia. O painel fica
|
|
491
|
+
abaixo das janelas de configuração; recolhido no editor, sai da área de digitação do chat. Testes verificam os
|
|
492
|
+
cliques nas janelas e o download real depois da resposta atrasada. A versão antiga também criava uma cópia pessoal
|
|
493
|
+
ao exportar um modelo em prévia: reproduzido usando o app.js da main, e a regressão confere o PPTX e a biblioteca.
|
|
494
|
+
|
|
495
|
+
## Fundo do mapa sem a falsa costa — retomada em 10/10/2026
|
|
496
|
+
|
|
497
|
+
Pedido: esconder a linha marítima do OpenStreetMap que parecia um litoral afastado das áreas. Os modos claro e
|
|
498
|
+
escuro usam agora os estilos Positron e Dark do OpenFreeMap, sem chave; o estilo exclui fronteiras marítimas e
|
|
499
|
+
preserva divisas terrestres, rios e o litoral verdadeiro. O mar fica azul suave no claro e azul profundo no escuro.
|
|
500
|
+
O modo ruas e fundos raster personalizados continuam disponíveis. Configurar mapa ganhou os dois fundos; apagar
|
|
501
|
+
o endereço restaura o padrão (antes, a gravação parcial conservava o endereço antigo).
|
|
502
|
+
|
|
503
|
+
MapLibre e a ligação Leaflet vão no pacote, com as licenças; no HTML exportado, entram embutidos apenas se houver
|
|
504
|
+
mapa vetorial e só carregam no primeiro slide que os usa. O worker é clássico para abrir também por file://. Só o
|
|
505
|
+
slide atual conserva o contexto gráfico; sair e voltar preserva a câmera e a legenda. A exportação mantém o limite
|
|
506
|
+
de espera de 8 s também ao voltar a um mapa cujo fundo não responde. Recusa no estilo, nos
|
|
507
|
+
metadados ou no primeiro tile desliga o fundo na sessão sem insistir, mantendo as camadas e o Tentar de novo.
|
|
508
|
+
|
|
509
|
+
Conferido nos dois fundos reais no litoral do Rio: áreas sobre a costa, nenhuma linha paralela no mar, nenhum erro
|
|
510
|
+
de JavaScript. Regressões reproduziram a falha do worker e o contexto que continuava ativo fora do slide antes das
|
|
511
|
+
correções. Testes cobrem pixels de terra/mar, divisa terrestre versus marítima, exportação por arquivo, câmera,
|
|
512
|
+
retomada, carregamento local no Studio e recusa com uma tentativa. Esta retomada preserva os commits anteriores de
|
|
513
|
+
tour, demos oficiais, editor de mapa, calendário e retirada de tipografia cinética e texto no cenário.
|
|
514
|
+
Na revisão da compatibilidade, um slide antigo com subtítulo e legenda perdia a legenda na conversão. A regressão
|
|
515
|
+
reproduziu a perda; agora os dois textos continuam juntos, com e sem imagem.
|
|
516
|
+
Achado na suíte: o teste da categoria Aula consultava a galeria antes da resposta de prévias. A resposta atrasada
|
|
517
|
+
reproduziu a falha; o teste agora aguarda os cartões e confere que a categoria escolhida durante o carregamento
|
|
518
|
+
continua valendo. Nenhuma exceção de JavaScript foi ignorada.
|
|
519
|
+
Outro achado na suíte: o encerramento das capturas iniciava `browser.close()` sem aguardá-lo. O evento de
|
|
520
|
+
desconexão do navegador antigo podia apagar a referência de um novo, deixando um Chrome aberto e impedindo a suíte
|
|
521
|
+
de terminar. Teste com fechamento atrasado reproduziu o problema; agora o encerramento espera e cada desconexão
|
|
522
|
+
só limpa sua própria referência.
|
|
523
|
+
|
|
524
|
+
Validação completa desta retomada: `npm test`, 988 testes, 962 passaram, 26 pulados, zero falhas; o processo
|
|
525
|
+
encerrou normalmente. A revisão do pacote confirmou os renderizadores e suas licenças no npm. Entrega por PR
|
|
526
|
+
com CI verde no Ubuntu e Windows; atualização da porta local 3517 e somente do Oracle dev (3518). O serviço
|
|
527
|
+
estável do Oracle permanece na 1.7.1, conforme pedido de Narumi. PR #182 mergeado com a CI concluída verde nos
|
|
528
|
+
dois sistemas; dev atualizado para a main `df5d42d`, produção conferida na 1.7.1 com o mesmo processo. As quatro
|
|
529
|
+
worktrees antigas foram removidas depois de conferir os commits incorporados e as duplicatas locais; a pasta
|
|
530
|
+
oficial e seu node_modules foram preservados.
|
|
531
|
+
|
|
532
|
+
## Texto no cenário sai; fundo claro do mapa com o mar visível — 10/10/2026
|
|
533
|
+
|
|
534
|
+
Narumi: "pode excluir também o texto no cenário. Ele é muito limitado e teoricamente dá para fazer coisas melhores
|
|
535
|
+
pedindo pra IA desenhar". Saiu do motor (`SCENES`, layout `scenography`), do CSS, do Studio (galeria, formulário),
|
|
536
|
+
da vitrine (a demo `templates/cenario`), do tour, da referência e do SKILL; o exemplo de matemática perdeu os três
|
|
537
|
+
slides de cenário. Deck antigo: com imagem, vira imagem de página inteira com o título por cima; sem imagem, frase
|
|
538
|
+
em destaque (`src/fiscal/normalize.js`; `engine.test.js`).
|
|
539
|
+
|
|
540
|
+
E "a área ainda não está em cima dos estados": os dados estavam certos (pontos do litoral a até 2,6 km da borda); no
|
|
541
|
+
fundo claro, o filtro cinza deixava terra e mar da mesma cor e a fronteira marítima que o OpenStreetMap desenha 12
|
|
542
|
+
milhas mar adentro parecia o litoral. O filtro agora guarda um azul leve no mar (`base.css`; `map.test.js`).
|
|
543
|
+
|
|
544
|
+
## Mapa: escala única, contornos detalhados e pontos mais bonitos — 10/10/2026
|
|
545
|
+
|
|
546
|
+
Narumi, no slide dos estados: "isso não parece certo". Cada camada tinha a própria escala (a Bahia, 2.900 MW, saía
|
|
547
|
+
tão forte quanto Minas, 5.100): camadas da mesma medida (a mesma coluna e unidade) agora dividem a escala. Os
|
|
548
|
+
contornos embutidos vinham da malha mínima do IBGE simplificada a 4 km (o DF era um octógono; Rio e Vitória na
|
|
549
|
+
borda): agora malha intermediária a ~650 m e países do Natural Earth 1:50m (`scripts/vendor-map.mjs`; o arquivo foi
|
|
550
|
+
de 181 KB para 690 KB, e no HTML só entram os estados usados). E "os pontos estão com círculos grandes e feios": o
|
|
551
|
+
estilo das linhas e áreas era aplicado também aos pontos (borda grossa colorida); agora ponto é pequeno, na cor, com
|
|
552
|
+
anel branco e sombra, bolha é translúcida com contorno da mesma cor, e o rótulo é uma pílula menor. Testes:
|
|
553
|
+
`map.test.js` (escala dividida, contornos detalhados com a área do IBGE, desenho dos pontos).
|
|
554
|
+
|
|
555
|
+
## Demos de mapa com cada tipo de objeto e onde se edita — 10/10/2026
|
|
556
|
+
|
|
557
|
+
Narumi: "ainda não entendi onde vão os menus e propriedades… mostre não só com pontos, mas com cada tipo de objeto".
|
|
558
|
+
A seção Mapas do Conheça o SagaDeck agora tem: pontos por categoria (o exemplo do layout), bolhas pelo tamanho de
|
|
559
|
+
uma coluna, regiões por valor, linhas e áreas, rota pelas ruas e área alcançável (calculadas uma vez pelo
|
|
560
|
+
OpenRouteService em 10/10/2026 e gravadas no tour, com a fonte na legenda), raio em volta de pontos e faixa em volta
|
|
561
|
+
de uma linha (calculados pelo sagadeck). E dois slides de foco guiado com capturas do Studio: onde fica o Editar mapa
|
|
562
|
+
e a tela do mapa (camadas, ferramentas, propriedades, dica, Concluir). As capturas saem de
|
|
563
|
+
`scripts/capturas-tour.mjs` (refazer quando a tela mudar; precisa de internet). A cópia do tour leva as capturas
|
|
564
|
+
(`demoAssets`). Achado no caminho: a faixa em volta de uma linha (também a que a IA grava) aparecia como uma pilha de
|
|
565
|
+
círculos com contorno e com buracos; agora vai marcada (`_faixa`) e sai como uma mancha só (`map.test.js`,
|
|
566
|
+
`map-analysis.test.js`).
|
|
567
|
+
|
|
568
|
+
## Calendário com visões e a saída da tipografia cinética — 10/10/2026
|
|
569
|
+
|
|
570
|
+
Narumi: "eu odeio muito a tipografia cinética… se ele não consegue ser melhor, remova completamente". Saiu do motor,
|
|
571
|
+
do runtime, do Studio (galeria, formulário, troca de layout), do tour e da referência. Deck antigo que a usava abre
|
|
572
|
+
como frase em destaque com as mesmas frases, uma por clique (`src/fiscal/normalize.js`; `engine.test.js`).
|
|
573
|
+
|
|
574
|
+
Sobre o calendário ("ficou excelente… mas se tiverem muitos eventos no mesmo mês vai encher de linhas e extrapolar a
|
|
575
|
+
altura"): o cartão cortava os eventos sem avisar. Agora `view` tem `meses` (o de antes), `mes` (um mês grande de
|
|
576
|
+
parede, os eventos escritos nos dias, "+ N mais" quando o dia lota), `semana` (uma coluna por dia com horário; fim
|
|
577
|
+
de semana vazio some) e `lista` (agenda em colunas, a letra diminui com a quantidade). Sem `view`, escolhe pelo que
|
|
578
|
+
cabe, com a altura medida no navegador (mês de 6 semanas conta). `month`/`week` escolhem o mês e a semana; `time` ou
|
|
579
|
+
"2026-11-16 09:00" dão a hora. No Studio, o formulário tem Visão e o botão **Um slide por mês** (cada slide no mês
|
|
580
|
+
grande, com os eventos dele; o "sem data" fica no primeiro). Testes: `calendar.test.js` (as visões, a escolha e, no
|
|
581
|
+
navegador, de 1 a 8 meses com até 16 eventos: ou cabe ou avisa) e `calendar-studio.test.js` (visão e botão, no deck
|
|
582
|
+
salvo). O calendário ganhou limite de 240 palavras (é denso por natureza).
|
|
583
|
+
|
|
584
|
+
## Editar mapa: uma tela própria — 10/10/2026
|
|
585
|
+
|
|
586
|
+
Narumi, testando o mapa da demo oficial: "não consigo clicar pra editar, não sei como edita, não sei se tem uma tela
|
|
587
|
+
diferente", e o ponto novo não gravava. O editor antigo era uma barra por cima do slide escalado (cobria o título), só
|
|
588
|
+
editava planilha e GeoJSON de arquivo (a demo tem tudo escrito no slide) e não tinha propriedades. Agora **Editar mapa**
|
|
589
|
+
(ou dois cliques no mapa) abre uma tela só do mapa (`map-editor.js`, classes `mpe-`; `.mx` já era de um layout):
|
|
590
|
+
camadas à esquerda (tipo, nome, quantos itens, olho), o mapa grande com as ferramentas e a dica do que fazer, e à
|
|
591
|
+
direita as propriedades do selecionado (campos com o que cada um faz no mapa, posição, comprimento ou área, excluir) ou
|
|
592
|
+
da camada e do mapa. Edita pontos e formas escritos no slide e em arquivo; GPX e KML só se leem. Corrigidos no caminho:
|
|
593
|
+
gravar arquivo do projeto em prévia de modelo respondia 409 (agora cria a cópia, `server.js`), planilha nova numa pasta
|
|
594
|
+
que não existia falhava (`writeSheet`), pontos ficavam debaixo de áreas e raios que entravam depois (na apresentação
|
|
595
|
+
também: o clique abria o cartão do raio), e desmontar o mapa no meio de uma animação de zoom dava erro. Testes:
|
|
596
|
+
`map-editor.test.js` (os dois caminhos, inclusive a demo em prévia), `project.test.js` (409), `map.test.js` (pontos por
|
|
597
|
+
cima). Achado na suíte: a faixa "Configure a IA" caía na coluna da lateral e espremia a biblioteca (corrigido, com
|
|
598
|
+
teste em `library-ui.test.js`).
|
|
599
|
+
|
|
600
|
+
## Conheça o SagaDeck com a demonstração dos mapas e a pasta Demos oficiais — 10/10/2026
|
|
601
|
+
|
|
602
|
+
Narumi esperava achar a apresentação junto das dela, numa pasta própria e só leitura. Agora a lateral da biblioteca
|
|
603
|
+
tem **Demos oficiais** (cadeado; `data-view="oficiais"` em `library.js`) com o Conheça o SagaDeck em primeiro e as
|
|
604
|
+
demos de recursos da vitrine (as mesmas chaves da `GALLERY`, tipo `recurso`), com a capa de verdade e só Apresentar e
|
|
605
|
+
Abrir: sem menu de mover, renomear ou excluir, sem arrastar, sem "Nova" dentro. O Conheça aparece também como o
|
|
606
|
+
primeiro cartão de Recentes e Todas, e debaixo da mensagem de biblioteca vazia. Abrem em prévia (`editor?model=…`).
|
|
607
|
+
Defeito achado pelo teste novo: **Apresentar uma prévia criava uma cópia** na biblioteca (o Apresentar mandava o deck
|
|
608
|
+
ao servidor, e na prévia isso conta como primeira mudança); agora, em prévia, ele não envia (o servidor já tem o mesmo
|
|
609
|
+
deck). Teste: `library-ui.test.js` (pasta, cartões, só leitura, abrir e apresentar sem criar arquivo).
|
|
610
|
+
|
|
611
|
+
**Exemplos sem nada da empresa de quem desenvolve.** Narumi viu o tour falar da Bridge e do processo de experimento e
|
|
612
|
+
projeto (DEV, HOM, PROD, Key Vault): vinha dos exemplos dos layouts (`layout-samples.js`) e da referência que ensina a
|
|
613
|
+
IA. Trocados por assuntos variados (viagem, loja, clínica, inscrições, reciclagem) nos exemplos, na referência, nos
|
|
614
|
+
modelos, nos textos de exemplo da interface e nos testes. Trava: `engine.test.js` ("sem nada da empresa de quem
|
|
615
|
+
desenvolve") falha se nomes de sistemas, processos internos ou produtos do banco voltarem a `src`, `templates`,
|
|
616
|
+
REFERENCIA, README ou SKILL. Os ambientes dev/hom/prod da API são recurso genérico e ficam.
|
|
617
|
+
|
|
618
|
+
Pedido de Narumi: uma apresentação bem completa do próprio sagadeck, incluindo a demo de mapas. O tour ganhou a seção
|
|
619
|
+
**Mapas** (`mapDemos` em `src/studio/tour.js`, slides marcados `demo: mapa`): o exemplo do layout, estados pintados por
|
|
620
|
+
valor com uma região por clique e a câmera indo até ela, linhas e áreas (GeoJSON escrito no slide, que o motor passou a
|
|
621
|
+
aceitar), cobertura com raios de 1 km calculados pelo código (`circle` de `src/map-analysis.js`) e dois quadros com o
|
|
622
|
+
que a IA e o Studio fazem no mapa. Os extras ganharam pesquisa na web, versões e material de consulta. Valores
|
|
623
|
+
ilustrativos e traçados aproximados dizem isso na tela. Testes: `engine.test.js` (seção de mapas e o tour inteiro sem
|
|
624
|
+
avisos) e `map.test.js` (GeoJSON no slide). Achado de passagem, tarefa à parte: o Studio acusa "texto pequeno" em
|
|
625
|
+
todo cartão (mede a letra da caixa, não a do texto).
|
|
626
|
+
|
|
152
627
|
## Conheça o SagaDeck — 10/10/2026
|
|
153
628
|
|
|
154
629
|
Pergunta de Narumi: a pessoa nem sabe o que dá para gerar. Agora a biblioteca tem, na lateral, **Conheça o
|