sagadeck 1.2.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/LICENSE +21 -0
- package/README.md +305 -0
- package/SKILL.md +148 -0
- package/bin/sagadeck.js +511 -0
- package/docs/ANDAMENTO.md +1255 -0
- package/docs/EXPERIENCIAS.md +39 -0
- package/docs/PLANO-EXPERIENCIAS.md +39 -0
- package/docs/PLANO-TESTE-AULAS-TECNICAS.md +44 -0
- package/docs/PLANO-TESTE-DESINFORMACAO.md +38 -0
- package/docs/REFERENCIA.md +1131 -0
- package/package.json +59 -0
- package/src/adaptive-layouts.js +18 -0
- package/src/ai/art-direction.js +8 -0
- package/src/ai/commands.js +130 -0
- package/src/ai/context.js +245 -0
- package/src/ai/deck-ai.js +1135 -0
- package/src/ai/directions.js +74 -0
- package/src/ai/document-materials.js +49 -0
- package/src/ai/document-visuals.js +215 -0
- package/src/ai/evaluation.js +31 -0
- package/src/ai/ground.js +55 -0
- package/src/ai/llm.js +292 -0
- package/src/ai/quality.js +51 -0
- package/src/ai/relay.js +45 -0
- package/src/ai/staged-generation.js +24 -0
- package/src/ai/transform.js +858 -0
- package/src/ai/usage.js +17 -0
- package/src/ai/variety.js +80 -0
- package/src/ai/video-frames.js +24 -0
- package/src/ai/video-generation.js +126 -0
- package/src/ai/web-operation.js +31 -0
- package/src/algo-catalog.js +153 -0
- package/src/algo-trace.js +139 -0
- package/src/api-client.js +514 -0
- package/src/api-collections.js +14 -0
- package/src/api-demo.js +222 -0
- package/src/aspect.js +40 -0
- package/src/build.js +323 -0
- package/src/carousel.js +56 -0
- package/src/chrome.js +65 -0
- package/src/code-highlight.js +68 -0
- package/src/code-lab-browser.js +22 -0
- package/src/code-lab.js +3 -0
- package/src/code-language.js +52 -0
- package/src/csv.js +74 -0
- package/src/decision-lab.js +20 -0
- package/src/deck-file.js +119 -0
- package/src/diagram/napkin-examples.js +13 -0
- package/src/diagram/napkin.js +539 -0
- package/src/docx.js +128 -0
- package/src/dynamics/git-sim.js +200 -0
- package/src/dynamics/layouts.js +112 -0
- package/src/elements.js +554 -0
- package/src/experiences.js +124 -0
- package/src/exploration.js +31 -0
- package/src/export/browser.js +53 -0
- package/src/export/estudo.js +67 -0
- package/src/export/pptx.js +475 -0
- package/src/export/roteiro.js +40 -0
- package/src/export/shots.js +182 -0
- package/src/figures/charts.js +383 -0
- package/src/figures/diagrams.js +117 -0
- package/src/figures/icons.js +166 -0
- package/src/figures/material-pictos.js +20 -0
- package/src/figures/pictos.js +255 -0
- package/src/figures/points.js +106 -0
- package/src/figures/qr.js +29 -0
- package/src/figures/ufmap.js +48 -0
- package/src/fiscal/autofix.js +377 -0
- package/src/fiscal/normalize.js +115 -0
- package/src/graph-lab.js +24 -0
- package/src/hologram.js +30 -0
- package/src/identity.js +86 -0
- package/src/import/crop.js +59 -0
- package/src/import/index.js +132 -0
- package/src/import/legacy-word.js +42 -0
- package/src/import/merge.js +45 -0
- package/src/import/office.js +123 -0
- package/src/import/omml.js +69 -0
- package/src/import/pdf-render.js +56 -0
- package/src/import/pptx.js +701 -0
- package/src/import/xml.js +42 -0
- package/src/infographic.js +401 -0
- package/src/layouts.js +723 -0
- package/src/lessons.js +171 -0
- package/src/library.js +399 -0
- package/src/markup.js +116 -0
- package/src/master.js +214 -0
- package/src/mcp/server.js +371 -0
- package/src/meeting.js +42 -0
- package/src/motion.js +56 -0
- package/src/package.js +116 -0
- package/src/playground.js +19 -0
- package/src/portal-scene.js +20 -0
- package/src/preferences.js +61 -0
- package/src/protect.js +51 -0
- package/src/purpose.js +24 -0
- package/src/pytrace.js +1092 -0
- package/src/research/duckduckgo.js +73 -0
- package/src/research/research.js +202 -0
- package/src/research/svg-image.js +17 -0
- package/src/research/visuals.js +52 -0
- package/src/runtime/api-collection-ui.js +5 -0
- package/src/runtime/api-collections.js +28 -0
- package/src/runtime/api-core.js +530 -0
- package/src/runtime/api-ui.js +966 -0
- package/src/runtime/base.css +1774 -0
- package/src/runtime/calc.js +139 -0
- package/src/runtime/code-lab.js +371 -0
- package/src/runtime/decision-lab.js +49 -0
- package/src/runtime/diagram.js +341 -0
- package/src/runtime/fit.js +268 -0
- package/src/runtime/fonts/caveat.css +2 -0
- package/src/runtime/fonts/comic-neue.css +3 -0
- package/src/runtime/fonts/fredoka.css +2 -0
- package/src/runtime/fonts/index.json +10 -0
- package/src/runtime/fonts/inter.css +2 -0
- package/src/runtime/fonts/patrick-hand.css +2 -0
- package/src/runtime/fonts/plus-jakarta-sans.css +2 -0
- package/src/runtime/fonts/press-start-2p.css +2 -0
- package/src/runtime/fonts/vt323.css +2 -0
- package/src/runtime/formula.js +148 -0
- package/src/runtime/graph-lab.js +72 -0
- package/src/runtime/meeting.css +7 -0
- package/src/runtime/meeting.js +10 -0
- package/src/runtime/motion.js +15 -0
- package/src/runtime/playground.js +11 -0
- package/src/runtime/points.js +19 -0
- package/src/runtime/portal-scene.css +6 -0
- package/src/runtime/portal-scene.js +22 -0
- package/src/runtime/runtime.js +827 -0
- package/src/runtime/science.js +89 -0
- package/src/runtime/skins/aluminio.css +31 -0
- package/src/runtime/skins/arcade.css +25 -0
- package/src/runtime/skins/aurora.css +17 -0
- package/src/runtime/skins/bauhaus.css +19 -0
- package/src/runtime/skins/editorial.css +19 -0
- package/src/runtime/skins/jornal.css +17 -0
- package/src/runtime/skins/manual-noite.css +14 -0
- package/src/runtime/skins/manual.css +14 -0
- package/src/runtime/skins/noite.css +21 -0
- package/src/runtime/skins/oceano.css +17 -0
- package/src/runtime/skins/pop.css +23 -0
- package/src/runtime/skins/prata.css +18 -0
- package/src/runtime/skins/prisma.css +28 -0
- package/src/runtime/skins/rabisco.css +18 -0
- package/src/runtime/skins/relevo.css +33 -0
- package/src/runtime/skins/sinal.css +16 -0
- package/src/runtime/skins/terminal.css +23 -0
- package/src/runtime/vendor/KATEX-LICENSE.txt +21 -0
- package/src/runtime/vendor/MERMAID-LICENSE.txt +21 -0
- package/src/runtime/vendor/PLOTLY-LICENSE.txt +21 -0
- package/src/runtime/vendor/katex.css +1 -0
- package/src/runtime/vendor/mermaid.min.js +3636 -0
- package/src/runtime/vendor/plotly.min.js +3620 -0
- package/src/runtime/video-player.js +35 -0
- package/src/science.js +162 -0
- package/src/studio/ai-response.js +36 -0
- package/src/studio/api-routes.js +152 -0
- package/src/studio/assets/contexto/leia-me.md +12 -0
- package/src/studio/assets/contexto/vendas.csv +7 -0
- package/src/studio/assets/imagens/colecao-arquitetura.png +0 -0
- package/src/studio/assets/imagens/colecao-cor.png +0 -0
- package/src/studio/assets/imagens/colecao-equipe.png +0 -0
- package/src/studio/assets/imagens/lavanda-cover.jpg +0 -0
- package/src/studio/code-routes.js +32 -0
- package/src/studio/command-approval.js +48 -0
- package/src/studio/demo-decks.js +98 -0
- package/src/studio/direction-routes.js +29 -0
- package/src/studio/errors.js +65 -0
- package/src/studio/exploration-demo.js +17 -0
- package/src/studio/exporting.js +105 -0
- package/src/studio/generation-report.js +10 -0
- package/src/studio/instance.js +48 -0
- package/src/studio/layout-samples.js +152 -0
- package/src/studio/project.js +371 -0
- package/src/studio/public/api-collections.js +28 -0
- package/src/studio/public/app.js +5265 -0
- package/src/studio/public/art-preview.js +10 -0
- package/src/studio/public/calc-fields.js +11 -0
- package/src/studio/public/chat-progress.js +47 -0
- package/src/studio/public/developer-fields.js +22 -0
- package/src/studio/public/explorer.js +443 -0
- package/src/studio/public/history.js +58 -0
- package/src/studio/public/index.html +867 -0
- package/src/studio/public/inspector.js +270 -0
- package/src/studio/public/lab-fields.js +5 -0
- package/src/studio/public/library.css +275 -0
- package/src/studio/public/library.html +55 -0
- package/src/studio/public/library.js +471 -0
- package/src/studio/public/merge-decks.js +155 -0
- package/src/studio/public/review-ui.js +100 -0
- package/src/studio/public/screenshot-editor.js +140 -0
- package/src/studio/public/share-ui.js +72 -0
- package/src/studio/public/slide-clipboard.js +23 -0
- package/src/studio/public/slide-form.js +1263 -0
- package/src/studio/public/studio-awareness.js +154 -0
- package/src/studio/public/studio-next.css +303 -0
- package/src/studio/public/style.css +1262 -0
- package/src/studio/public/ui-icons.js +2 -0
- package/src/studio/public/viewers.js +372 -0
- package/src/studio/public/visual-editor.js +326 -0
- package/src/studio/public/workspace.js +18 -0
- package/src/studio/public-files.js +1 -0
- package/src/studio/request-helpers.js +41 -0
- package/src/studio/server.js +1583 -0
- package/src/studio/share-routes.js +146 -0
- package/src/studio/slide-copy-routes.js +26 -0
- package/src/studio/slide-copy.js +30 -0
- package/src/studio/snapshot.js +160 -0
- package/src/studio/style-routes.js +103 -0
- package/src/studio/template-collections.js +97 -0
- package/src/studio/versions.js +95 -0
- package/src/studio/video-download.js +29 -0
- package/src/studio/visual-keys.js +52 -0
- package/src/studio/workspaces.js +39 -0
- package/src/table.js +93 -0
- package/src/templates/scaffold.js +372 -0
- package/src/themes.js +604 -0
- package/src/trace-view.js +450 -0
- package/src/uid.js +19 -0
- package/src/video-player.js +40 -0
- package/src/visual-edits.js +99 -0
- package/src/ws.js +134 -0
- package/templates/cenario/Texto no cen/303/241rio.yaml" +171 -0
- package/templates/cenario/imagens/cidade.svg +30 -0
- package/templates/cenario/imagens/pessoa.svg +15 -0
- package/templates/cenario-e-ciencia.yaml +47 -0
- package/templates/ensaio-api.yaml +160 -0
- package/templates/exemplo-alegre.yaml +75 -0
- package/templates/exemplo-keynote.yaml +90 -0
- package/templates/exemplo-napkin.yaml +139 -0
- package/templates/exemplo.yaml +228 -0
|
@@ -0,0 +1,1255 @@
|
|
|
1
|
+
# Trabalho em andamento
|
|
2
|
+
|
|
3
|
+
Diário de bordo das frentes longas: o que já entrou, o que falta e as decisões tomadas. Serve para qualquer
|
|
4
|
+
sessão (Claude, GPT, pessoa) continuar de onde a outra parou, sem depender de conversa ou de máquina.
|
|
5
|
+
|
|
6
|
+
**Regra:** ao terminar uma etapa, atualize este arquivo no mesmo commit. Ao abrir uma sessão nova, leia antes de
|
|
7
|
+
começar. Trabalho em curso vai para o GitHub (commit + push) a cada etapa, nunca só no disco local.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Avaliação fora da hidrologia — 03/10/2026
|
|
12
|
+
|
|
13
|
+
- Plano: `docs/PLANO-TESTE-DESINFORMACAO.md`.
|
|
14
|
+
- Tema novo: Como uma mentira vira verdade na internet? Duas versões, executiva e estudante, geradas pela API do Studio na biblioteca oficial.
|
|
15
|
+
- Em curso: geração real com imagens e conferência visual. Casos fictícios e referência conceitual da UNESCO; sem reescrita externa de slides.
|
|
16
|
+
- Verificação planejada: conteúdo e sequência, controles e estados extremos, estudo, erros de navegador e composição. Falhas serão registradas antes de corrigir o produto.
|
|
17
|
+
- Executiva gerada e corrigida pelo próprio chat: gráfico com zoom/hover, escalas completa e recortada, caminhos com retorno. Conferência visual aprovada; navegação e cálculo testados no navegador e estudo offline.
|
|
18
|
+
- Falhas reproduzidas e corrigidas no produto: resultado válido perdido em queda do provedor durante reparo; revisão sem avanço por slide e sem relatório persistido; painel de calculadora cortado com duas curvas/comparação.
|
|
19
|
+
- Estudantil independente guardada como diagnóstico por mudar exemplos/ordem e manter duas pendências. Versões finais com 11 slides: editorial e Bauhaus; conteúdo, dados, fórmulas e navegação iguais, conferência visual aprovada e zero erros JavaScript nos dois HTMLs.
|
|
20
|
+
- Contagem anti-sono também corrigida: texto de `consulta`, que só vai para estudo, não conta como texto do palco. Relatórios pessoais e apresentações permanecem na biblioteca; código e plano vão para GitHub após validação final.
|
|
21
|
+
|
|
22
|
+
## Exportação PPTX/PDF — 03/10/2026
|
|
23
|
+
|
|
24
|
+
- Diagnóstico com decks sintéticos de dois slides; a aula de 80 slides não foi usada nesta rodada.
|
|
25
|
+
- LaTeX no PowerPoint preservado como imagem em resolução dupla: fórmula isolada ou parágrafo inteiro com fórmulas, mantendo também o texto entre elas. Evita reconstrução incorreta de frações, expoentes e fontes KaTeX.
|
|
26
|
+
- Exportação aguarda gráficos, diagramas, fontes e decodificação de imagens, com limite de 15 s na preparação. PDF também espera as imagens das páginas antes de imprimir. Navegadores são fechados em finally, inclusive em erro.
|
|
27
|
+
- PPTX emite estado inicial oculto para entradas por clique. Widgets escapam fechamento de script. Falha de salvar retorna 500; arquivos temporários têm identificador único e são limpos.
|
|
28
|
+
- PDF preserva o tema por padrão; a preferência explícita de impressão clara continua disponível.
|
|
29
|
+
- Verificação pontual: downloads HTTP PPTX/PDF válidos, PDF aberto por parser com duas páginas e imagens em ambas; PowerPoint instalado abriu e renderizou frações, integrais, derivadas e fórmulas inline. Entradas e saídas abriram com três efeitos. Downloads pelo menu do Studio também passaram.
|
|
30
|
+
- Validação final: npm test, 700 testes (680 passaram, 20 pulados, zero falhas); regressão adicional de preferências passou. Bundle Python atualizado. A preferência local PDF claro foi desativada pela API do Studio para manter o visual do HTML.
|
|
31
|
+
- Otimizações de singleton, cache e refatorações amplas ficaram fora desta correção, para manter diagnóstico e mudança pontuais.
|
|
32
|
+
|
|
33
|
+
## Recriação visual fiel — 02/10/2026
|
|
34
|
+
|
|
35
|
+
- Em curso: testar a aula PPTX de 83 slides pelo próprio SagaDeck, sem retoques manuais no deck. Importada uma cópia na biblioteca, tópico Laboratório de recriação.
|
|
36
|
+
- Regressões encontradas: prompt de recriação proibia image_prompt enquanto outras regras exigiam imagens; escritor recebia apenas itens do plano, perdendo o pedido visual completo. Teste reproduziu a proibição.
|
|
37
|
+
- Plano: corrigir instruções gerais; gerar a aula pelo chat; conferir conteúdo e figuras contra originais; corrigir falhas reproduzíveis no produto; repetir avaliações reais de capacidade/algoritmo/consulta; suíte, bundle, publicação e reinício na 3517.
|
|
38
|
+
- Referências visuais: acabamento de maquete/corte 3D para conceitos; mapas específicos precisam manter evidência, sem inventar geografia.
|
|
39
|
+
- Implementado: referências anexadas chegam à visão no planejamento, pedido completo chega à escrita; geração revisa automaticamente quando há ferramenta de revisão e admite três correções; resultado revelado tem estado explícito; curvas têm contraste e traços distinguíveis.
|
|
40
|
+
- Revisão: JSON com texto ao redor é aceito; indisponibilidade registra motivo, e achados contraditórios passam por confirmação semântica. Não se declara conferido quando uma revisão falha.
|
|
41
|
+
- Testes específicos desta frente: 57 passaram. A suíte anterior encontrou uma asserção desatualizada que examinava a revisão como se fosse o pedido de geração; ajustada para conferir a chamada correta.
|
|
42
|
+
- Avaliações reais: capacidade teve revisão posterior aprovada; algoritmo e consulta ainda têm pendências. A validação integral da aula permanece pendente; o pedido de 03/10 mudou a prioridade para exportações pequenas, sem novos testes na aula longa.
|
|
43
|
+
|
|
44
|
+
## Experiências exploráveis e autonomia — 02/10/2026
|
|
45
|
+
|
|
46
|
+
Plano completo e estado de retomada: `docs/PLANO-EXPERIENCIAS.md`. Pedido do usuário: implementar as sete frentes, registrar avanços e publicar etapas validadas.
|
|
47
|
+
|
|
48
|
+
- Publicado e mergeado: PR #115, main 5b7e20d. Sem mudanças em decks pessoais ou no Oracle.
|
|
49
|
+
- Implementado e validado: calc com cenários, comparação congelada, restaurar, previsão/revelação, curva ligada às entradas e selo ilustrativo; formulário; demo Explore uma ideia; estados e explicações no material de estudo.
|
|
50
|
+
- Agente: validação de fórmulas em estados/extremos; `review: true` fotografa estados e devolve achados ao agente para uma correção. Revisão indisponível permanece explicitamente sem conferência.
|
|
51
|
+
- Elementos: continuidade de posição/tamanho por nome entre cenas, respeitando movimento reduzido.
|
|
52
|
+
- Direção de arte: variantes podem propor tema para o conjunto com composição do conteúdo real, aplicação explícita na escolha.
|
|
53
|
+
- Avaliação: cinco pedidos independentes em `src/ai/evaluation.js`, execução real por `tools/evaluate-autonomy.mjs`, relatórios e decks na biblioteca. Tokens/custo medidos em escopo isolado por tarefa, quando informados pelo provedor; ausência não vira zero.
|
|
54
|
+
- Validação final: npm test, 691 testes; 671 passaram, 20 pulados, zero falhas. Testes específicos adicionais de Studio, IA, contraste, continuidade, estudo offline e medição concorrente passaram. Bundle atualizado.
|
|
55
|
+
- Avaliação real: duas rodadas de cinco casos. Segunda rodada: geometria e narrativa conferidas; demais com pendências explícitas. A avaliação identificou contraste ruim de resultados alterados e escala ausente na curva: corrigidos no motor, sem retocar os exemplos.
|
|
56
|
+
- Formulário extraído para calc-fields.js; prévias de direção em iframe isolado (art-preview.js), sem vazamento de CSS. Limite de tamanho do formulário reduzido.
|
|
57
|
+
- Porta atual por instrução expressa do usuário: 3517. O processo SagaDeck anterior foi substituído; wotan-router em 3001 preservado. Demo: /editor?model=explorar. Sem deploy remoto.
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## Senso crítico da recriação: a IA ganha ferramentas para se corrigir — 02/10/2026
|
|
61
|
+
|
|
62
|
+
Feedback da versão "escalafobética" da Aula 1 (relevo): foco guiado todo fora do lugar, mapa do posto
|
|
63
|
+
fluviométrico ainda em xerox, hidrograma com a imagem da equação de P, "[object Object]", texto gigante, superfície
|
|
64
|
+
3D de enfeite ("girar o relevo") e o ciclo em camadas de cabeça para baixo. A conferência visual procurava
|
|
65
|
+
informação faltando, não desenho, e a IA não tinha como medir onde ficava cada coisa na figura.
|
|
66
|
+
|
|
67
|
+
- **Foco guiado ancorado pela visão** (`src/ai/ground.js`): depois das imagens prontas, a visão localiza cada
|
|
68
|
+
destaque na imagem (caixa em % da figura); recriação e geração usam. Antes as coordenadas eram chutadas.
|
|
69
|
+
- **A visão vê arquivo por arquivo**: com mais de uma imagem no slide, cada uma vai com o nome; cada figura sai com
|
|
70
|
+
`arquivo`. A escritora recebe `(arquivo X)` antes de cada figura (pegava a fórmula no lugar do hidrograma).
|
|
71
|
+
- **Redesenho automático** da ilustração escaneada/pixelada que a escritora deixou como estava (`image_prompt` +
|
|
72
|
+
`image_ref`, copiando os rótulos lidos pela visão).
|
|
73
|
+
- **Imagem de equação** num slide novo volta para a correção: escrever em LaTeX.
|
|
74
|
+
- `table.side` aceita elemento (era o "[object Object]"); `statement` não deixa a IA pôr frase longa em `h2`.
|
|
75
|
+
- Infográfico **`camadas`**: perfil físico de cima para baixo com setas de fluxo (`flows`). Regras: camadas
|
|
76
|
+
físicas vão nele; `plot.surface` só com função/dado do material.
|
|
77
|
+
- Conferência visual com "crítica de desenho": destaque fora do lugar, figura errada, equação como imagem, gráfico
|
|
78
|
+
de enfeite, ordem física invertida, texto gigante.
|
|
79
|
+
- Testes: `test/camadas.test.js`, `test/transform.test.js` (visão por arquivo, equação, foco ancorado),
|
|
80
|
+
`test/retorno-recriada.test.js`.
|
|
81
|
+
|
|
82
|
+
**2ª rodada (mesmo dia): a autocrítica não respondia.** A conferência visual falhou em 5 lotes ("resposta sem JSON").
|
|
83
|
+
Sondado com o modelo de verdade: com o lote inteiro numa chamada, o DeepSeek Flash pensava até estourar o limite
|
|
84
|
+
(16 mil tokens de raciocínio, texto vazio) ou aprovava tudo sem olhar; até de um slide só entrava em laço. Sem
|
|
85
|
+
raciocínio, a mesma conferência sai em 1–2 s e acha o que importa (título repetido, metade vazia, texto cortado).
|
|
86
|
+
|
|
87
|
+
- `chat(..., { think: false })` pede `reasoning: {enabled: false}`; provedor que recusa o campo (400) leva a chamada
|
|
88
|
+
de novo sem ele, e o sagadeck lembra. Usado na conferência visual e na localização dos destaques.
|
|
89
|
+
- Conferência visual: um slide novo por chamada (com o original dele), 4 em paralelo; slide sem resposta fica só ele
|
|
90
|
+
sem conferência (aviso no relatório); a resposta sem JSON fica em `falhas/conferencia-N.txt`; vale a lista de
|
|
91
|
+
problemas mesmo com `"ok": true` junto (o achado se perdia).
|
|
92
|
+
- Foco guiado: a mesma figura com os mesmos destaques não é localizada de novo a cada rodada de correção (memo);
|
|
93
|
+
`figure: caminho.png` (texto, não objeto) também é localizada (o Vacununga ficava com as caixas chutadas); a visão
|
|
94
|
+
que não responde vira aviso no relatório; caixa do tamanho da figura inteira não vale (fica a da escrita).
|
|
95
|
+
- Redesenho automático: sem a moldura de print (janela do leitor de PDF, barra de ferramentas); o texto alternativo
|
|
96
|
+
é o que a figura mostra, não o pedido ao modelo de imagem.
|
|
97
|
+
- Dois gráficos em colunas lado a lado dividem a linha por igual (o primeiro saía minúsculo).
|
|
98
|
+
- Limites da tarefa: `calls` (300) conta só as chamadas que escrevem e pensam; as de olhar (`think: false`) têm o
|
|
99
|
+
próprio `looks` (2000). A rodada 3 parou no "Limite de 300 chamadas" com a conferência por slide.
|
|
100
|
+
- Rodada 4 (19 min, completa): os 7 pontos do retorno resolvidos. Duas regras novas de prompt: tema com identidade
|
|
101
|
+
própria não leva paleta sem pedido de cores ("sóbrio" virou `grafite` e o relevo saiu claro, destaques em tarja
|
|
102
|
+
cinza); quebra de linha do PowerPoint no meio da frase é juntada (frases picadas nos slides de chuva de projeto).
|
|
103
|
+
- Rodada 5 caiu no plano: "nada chegou em 180 s" duas vezes. O modelrelay descartava os keep-alives e o
|
|
104
|
+
raciocínio, e o modelo que pensa por minutos parecia morto. modelrelay 0.2.2 (naruminho/modelrelay#8): evento
|
|
105
|
+
`alive` e o comentário SSE `: alive` enquanto ele pensa; aqui `MIN_MODELRELAY` e o extra `ia` foram para 0.2.2.
|
|
106
|
+
- Ainda abertos: slides repetidos às vezes (declividade em dois slides seguidos); equação pequena num canto
|
|
107
|
+
(IDF de São Carlos); o modelo pede pouca ilustração nova mesmo quando o pedido quer "imagens realistas".
|
|
108
|
+
- Testes: `test/llm-raciocinio.test.js`, `test/ground.test.js`, `test/blocks-graficos.test.js`, `test/transform.test.js`.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Pesquisa na web para gerar material (estilo deep research) — fase 1 feita em 02/10/2026
|
|
113
|
+
|
|
114
|
+
- Aprovado e pedido: a IA distingue quando o que ela sabe basta (hash table) e quando pesquisar (ranking das IAs de
|
|
115
|
+
fronteira, calendário dos próximos filmes, tecnologia que só existe em artigo: o paper, e o preprint se o artigo
|
|
116
|
+
estiver fechado), e transforma o material denso em reportagem (Superinteressante), lendo vários formatos.
|
|
117
|
+
- `src/research/research.js`: decidir (com a data de hoje; acadêmico ou não; buscas) → buscar (DuckDuckGo e, no
|
|
118
|
+
acadêmico, a API do arXiv) → escolher as fontes (oficial, acadêmica, imprensa séria, referência; descarta blog,
|
|
119
|
+
fazenda de conteúdo, agregador) → ler (`fetchUrlDoc`: página, PDF até 15 MB, docx, pptx, xlsx, texto; artigo que só
|
|
120
|
+
deu o resumo vai ao preprint) → anotar (fatos com o trecho). Materiais [F1]… num bloco próprio ("FONTES DA PESQUISA
|
|
121
|
+
NA WEB"), a regra de citar no slide e fechar com `references`, e tudo em `contexto/pesquisa/` (fontes.json,
|
|
122
|
+
notas.md, o texto de cada fonte). Sem internet ou `SAGADECK_WEB=0` (a rede do banco): avisa, não inventa dado
|
|
123
|
+
recente e pede links/anexos. Preferências › IA › "Pesquisar na web quando precisar"; `sagadeck new --sem-pesquisa`.
|
|
124
|
+
- Ligado na geração de deck (Studio: Criar com IA e biblioteca; `sagadeck new --prompt`). Falta (fases 2 e 3): no chat
|
|
125
|
+
de um deck aberto; figuras de dentro dos artigos e prints de páginas oficiais; outros buscadores.
|
|
126
|
+
- Testes: `test/research.test.js` (web e LLM falsos; ao vivo, a decisão nos 4 exemplos da pessoa).
|
|
127
|
+
|
|
128
|
+
### O plano original (02/10)
|
|
129
|
+
|
|
130
|
+
- Pedido: "faça um tutorial de interpretabilidade com SHAP" e o sagadeck pesquisa, baixa páginas, PDFs, artigos e
|
|
131
|
+
figuras de fontes confiáveis (documentação oficial, repositório, artigos, livros de referência; nunca o blog que
|
|
132
|
+
"delira"), lê, tira prints/figuras, plota e desenha esquemas que não existem, e gera os slides com a fonte de cada
|
|
133
|
+
informação. Opção caseira: no banco a internet é barrada e a tarefa avisa claramente (cole links/anexe arquivos).
|
|
134
|
+
- Forma: uma tarefa em etapas comandada pelo código, como a transformação (salva em disco, retomável, limites de
|
|
135
|
+
chamadas/tokens/minutos, relatório), dentro do sagadeck. Não é o runtime de agente compartilhado (adiado em 29/09).
|
|
136
|
+
- Etapas: planejar (perguntas e roteiro) → buscar (buscador trocável: DuckDuckGo, que já existe; busca do Gemini
|
|
137
|
+
com grounding; pesquisa web do OpenRouter) → filtrar fontes (oficial > acadêmico > referência; o resto descarta ou
|
|
138
|
+
marca como contexto) → baixar para `contexto/pesquisa/` (texto limpo, PDF, figuras com legenda; origem e data) →
|
|
139
|
+
ler e extrair (notas com citação; visão nas figuras; o Chrome fotografa o trecho da documentação ou a figura da
|
|
140
|
+
página do artigo) → gerar (figura original com crédito quando é a melhor; gráfico dos dados; esquema/ciclo novo;
|
|
141
|
+
imagem de IA só ilustrativa) → conferir (fiscal, visão e toda afirmação com número/fato vinda de fonte lida).
|
|
142
|
+
- Fases: 1) busca com filtro, ler páginas e PDFs, slides com fonte, print de página oficial; 2) figuras de dentro
|
|
143
|
+
dos artigos, plot dos dados, esquemas novos; 3) outros buscadores e o aviso do banco refinado.
|
|
144
|
+
|
|
145
|
+
## Link para ver, só leitura (compartilhar com a Mary) — 01/10/2026
|
|
146
|
+
|
|
147
|
+
- Pedido: no servidor da Oracle (login do portal), mandar o link de UMA apresentação para a Mary, só para ver.
|
|
148
|
+
- `src/studio/share-routes.js`: Arquivo › Compartilhar link (`share-ui.js`, janela própria; app.js no limite). Código
|
|
149
|
+
de 144 bits por link, em `<biblioteca>/.compartilhados.json` (dono, id do deck, público?, com as notas?).
|
|
150
|
+
`/ver/<código>`: no multiusuário exige o usuário do portal; `/publico/<código>`: só se o link é público. A página é
|
|
151
|
+
a apresentação montada na hora (a versão atual), sem as notas (a não ser que marcado), com noindex, no-referrer e
|
|
152
|
+
no-store. Revogar: só o dono; o de outra pessoa nem aparece.
|
|
153
|
+
- oraculo-workspace: nginx `location /sagadeck/ver/` (`auth_request /_session`: qualquer logado, mesmo sem o app
|
|
154
|
+
sagadeck) e `/sagadeck/publico/` (sem sessão, cabeçalho de usuário vazio, só GET); `infra/DEPLOY-sagadeck.md`.
|
|
155
|
+
- Quem recebe também baixa (pedido: "quero q ela consiga baixar pra ela se precisar nos formatos possiveis"): botão
|
|
156
|
+
Baixar na página do link (`<link>/baixar/<formato>`): PDF, PowerPoint, HTML para apresentar sem internet, material de
|
|
157
|
+
estudo (PDF e HTML) e `.sagadeck`; roteiro e "tudo" só no link com as notas (são feitos delas). Sem as notas, nenhum
|
|
158
|
+
arquivo as leva. Um arquivo por vez por link (PDF/PPTX usam o Chrome do servidor). Mesmas regras de acesso do link.
|
|
159
|
+
- Teste: `test/share.test.js` (Studio local pelo menu; multiusuário por HTTP), `tests/test_portal_app_access.py`.
|
|
160
|
+
|
|
161
|
+
## Revisão das 4 versões da Aula 1 pelo fiscal: acabamento do motor e transformação mais rápida — 01/10/2026
|
|
162
|
+
|
|
163
|
+
- Método: o fiscal do sagadeck (`src/export/shots.js: check`) em todos os slides das 4 versões + fotos dos acusados.
|
|
164
|
+
Antes: melhorada Flash 22 achados, Pro 36, recriada Flash 10, Pro 18. Depois: melhorada Flash 0 (o resto é letra
|
|
165
|
+
miúda pedida pelo conteúdo e casos pontuais). As correções são do motor: valem para os decks já gerados.
|
|
166
|
+
- **Faixa do título do mestre** cortava a perna do q/g/ç e a 2ª linha, e não encolhia: o título do estilo vem com
|
|
167
|
+
`font-size !important` e o ajuste mudava `style.fontSize` sem efeito. Agora `setProperty(..., "important")`, sem
|
|
168
|
+
tolerância quando a caixa esconde a sobra, `data-fit-self` (encolhe só pelo próprio tamanho), cabeçalho da faixa sem
|
|
169
|
+
o gap/padding do layout e folga de .1em embaixo.
|
|
170
|
+
- **Largura que não cabe** (`fit.js: fitWide`): fórmula `$$…$$` mais larga que o slide encolhe até caber; palavra
|
|
171
|
+
maior que a caixa (rótulo ENTÃO de 64 px em 140 px, "probabilidade" num cartão) encolhe até 50% (o Chrome daqui
|
|
172
|
+
não hifeniza português; partir a palavra ficou feio). Antes o "encolher tudo" deixava o slide inteiro miúdo.
|
|
173
|
+
- **Cor `hi` como texto**: em estilo tirado do PowerPoint era azul-bebê no branco; `--hi-ink` (o hi se dá para ler,
|
|
174
|
+
senão a ênfase, senão o texto).
|
|
175
|
+
- **Tabela em markdown** (`| a | b |`, com `|---|`) em qualquer texto vira tabela de verdade (a IA escrevia assim
|
|
176
|
+
dentro de passo do `solution` e saía cru).
|
|
177
|
+
- **`solution`**: dado e "pede-se" em frase saem como texto ("ver tabela" virava "vertabela" em itálico); os passos
|
|
178
|
+
encolhem (até 60%) antes de cortar o primeiro no último clique, e sem o esmaecido quando cabem; "Pede-se" não
|
|
179
|
+
quebra no hífen. Fórmula no meio do texto no tamanho da letra (o KaTeX aumentava 21%).
|
|
180
|
+
- **Imagem**: solta no `add` com `w: 100%` ocupava tudo e espremia o layout até altura 0 (agora 420 px no máximo,
|
|
181
|
+
como sem tamanho; esse caso antes não tinha teste); figura sem `fit` cabe inteira quando o corte passaria de 20%
|
|
182
|
+
(gráfico perdia eixo e legenda), medido no navegador com a caixa real (`data-autofit`, `fitImages`).
|
|
183
|
+
- **`science` só com equação** (`plot: false`) espremia os cartões do `add` por baixo da fórmula.
|
|
184
|
+
- **Fiscal**: contraste pelo que está de fato embaixo do texto (a pílula SVG do infográfico; antes "branco no
|
|
185
|
+
branco"), marca-texto no título não é estouro. Falso alarme virava correção à toa da IA.
|
|
186
|
+
- **Transformação**: a conferência roda o fiscal nos slides escritos (problema exato, com o texto do objeto, para a
|
|
187
|
+
correção) antes da visão; blocos em paralelo (3; `SAGADECK_TRANSFORM_PARALLEL`); no fim, pendente por fato é
|
|
188
|
+
conferido de novo contra todos os itens irmãos prontos (o fato que outro bloco levou não é pendência).
|
|
189
|
+
- CI do Windows: o teste do modelo lavanda contava a imagem da prévia antes de ela entrar.
|
|
190
|
+
- **Recriada sem a moldura antiga**: na Aula 1 a moldura foi copiada slide a slide (sem `deco`), então o filtro por
|
|
191
|
+
`deco` não tirava nada. `repeatedFrame` (src/master.js, a mesma detecção do estilo) acha o que se repete na mesma
|
|
192
|
+
posição; o motor não desenha isso nos originais de um deck `recreatedFrom` (vale para as recriadas já geradas) e a
|
|
193
|
+
transformação tira ao montar. Número da página, data e rodapé do original também saem. Na detecção, elemento que
|
|
194
|
+
não é imagem/desenho/caixa de texto tinha a chave "?" + posição (dois conteúdos no mesmo lugar viravam moldura).
|
|
195
|
+
- Visão (VER) também em lotes paralelos.
|
|
196
|
+
- Pergunta: "você pediu para seguir um tema?". Sim (tema prata ou manual, paleta floresta ou mar, purpose consulta);
|
|
197
|
+
a IA escolheu manual, mas a paleta se perdia (o plano só tinha "tema") e o propósito era sempre palestra (fixo no
|
|
198
|
+
código e numa regra do prompt). Agora o plano devolve `paleta` (recriar) e `proposito`, e quem escreve recebe a
|
|
199
|
+
regra do propósito escolhido.
|
|
200
|
+
- Rodada ao vivo (01/10, Flash, código e37b1bf, figuras do cache): pedido curto em 26 min (antes 63), 81 slides, 4
|
|
201
|
+
pendentes, 17 pontos de desenho, tema prata, fiscal só com 5 letras pequenas. O pedido detalhado parou no PLANO:
|
|
202
|
+
`SAGADECK_LLM_TIMEOUT` era o tempo TOTAL da chamada, e em streaming o relay só manda os cabeçalhos quando o modelo
|
|
203
|
+
começa a escrever. Agora são dois limites (llm.js): até a 1ª palavra (`SAGADECK_LLM_FIRST_TIMEOUT`, 600 s) e sem
|
|
204
|
+
chegar nada (`SAGADECK_LLM_TIMEOUT`, 180 s). `test/llm-timeout.test.js`. Achados para depois: pendente falso por
|
|
205
|
+
coordenada de mapa (7606, 7608…) e por palavra comum com maiúscula ("Para", "Seção", "Hidrográfica"); correção que
|
|
206
|
+
falha por formato de gráfico e por YAML nas notas; visão "sem JSON".
|
|
207
|
+
- Na 2ª tentativa do pedido detalhado, o chat gravou o resultado na recriada da rodada 1 (81 → 130 slides): o Studio
|
|
208
|
+
local tem UMA apresentação aberta para todas as abas e aparelhos; depois do reinício, uma aba aberta na recriada a
|
|
209
|
+
reabriu logo depois de o script abrir o original, e o chat grava em W.file (o aberto naquele instante), não no que
|
|
210
|
+
quem pediu estava vendo. A rodada 1 foi remontada da tarefa salva (os 69 itens prontos; montar é código, sem
|
|
211
|
+
modelo; mesmo resultado: 81 slides, 4 pendentes, 17 a conferir). Correção: a aba manda `expectFile` (o arquivo que
|
|
212
|
+
está vendo) ao salvar, no YAML e no chat; se o Studio está com outro aberto, 409 e "Recarregue" (nada é gravado).
|
|
213
|
+
`test/stale-tab.test.js`.
|
|
214
|
+
- Retorno da pessoa sobre a recriada da rodada 1 (10 pontos + "tema sem graça"), causas e correções:
|
|
215
|
+
- tabela numa linha só (o YAML juntou as linhas), fórmula entre \( \) e \[ \], \frac (barra dobrada vira
|
|
216
|
+
quebra de linha no LaTeX): `md` aceita os três;
|
|
217
|
+
- legenda por cima do gráfico no layout `image`: com `fit: contain`, a legenda vai embaixo (foto segue com o cartão);
|
|
218
|
+
- tabela do `add` espremendo o layout e ficando por cima do texto: no máximo 45% da altura (a letra encolhe); o
|
|
219
|
+
ajuste e o fiscal veem a tabela;
|
|
220
|
+
- equação e tabela repetidas como imagem e slides "versão alternativa"/"imagem original": a conferência cobrava
|
|
221
|
+
TODA imagem do plano ("faltou imagens") e a IA repunha; não cobra mais. O que a visão leu numa figura vira dica na
|
|
222
|
+
correção, não pendência (fim das pendências por coordenada de mapa). Regra nova: critério de designer (redesenhar
|
|
223
|
+
quando dá sem perder nada, manter só o insubstituível, nunca as duas);
|
|
224
|
+
- ciclo hidrológico em fluxograma (setas de volta cruzando tudo): infográfico `ciclo` novo (etapas numa elipse,
|
|
225
|
+
setas curvas na cor de cada uma) e a referência manda ciclos para ele;
|
|
226
|
+
- recriar sem tema pedido: visual marcante e diferente do original (cor, paleta viva ligada ao assunto).
|
|
227
|
+
- Rodada 02/10 (pedido curto, a11fc5a): 24 min, 81 slides, 3 pendentes; tabelas reais, fórmulas certas, curvas IDF
|
|
228
|
+
redesenhadas pela equação (science). Ainda: tema manual (branco) apesar da regra; ciclo ainda em diagram; gráfico
|
|
229
|
+
em `image` sem `fit: contain` (legenda por cima); exercício novo com série INVENTADA (120, 95, 150…), que não
|
|
230
|
+
existe no original. Correções: regra explícita de ciclo → `shape: ciclo`; exercício novo prefere os
|
|
231
|
+
dados do material quando houver; imagem do original que a visão viu como não-foto sai `fit: contain` por código
|
|
232
|
+
(wholeFigures). Tema: a pessoa corrigiu, "colorido" era a preferência DELA para esta aula, não regra: o recriar
|
|
233
|
+
segue o tema/jeito que o pedido disser e, sem nada, a IA escolhe; o "bonito e colorido" vai no pedido do chat.
|
|
234
|
+
Também não obrigar "dados fictícios" (é comum pedir material completo com dados, exemplos e exercícios gerados).
|
|
235
|
+
- Retorno sobre a rodada 02/10 (a11fc5a), causas e correções:
|
|
236
|
+
- capa velha antes da nova e "Componentes do ciclo" com desenhos velhos semi-transparentes: no recriar, pendência
|
|
237
|
+
punha o original ao lado e "juntar" guardava os desenhos do original. Agora juntar vira escrever e pendência
|
|
238
|
+
vira proposta marcada "revisar" (com o que faltou), sem o original;
|
|
239
|
+
- setas do Mermaid em degraus ("raio do Darkseid") e pontas tortas: ligações curvas por padrão (`curve: angulo`
|
|
240
|
+
ou `reta` por slide); rótulo com parênteses sem aspas (quebrava o diagrama da delimitação) ganha aspas;
|
|
241
|
+
- gráfico com o tipo como chave (`{ line: {…} }`) sumia em silêncio: desenha; sem tipo, erro para a IA;
|
|
242
|
+
- dois gráficos num row com 300 px: dividem a largura; `title` do gráfico e `caption` do blocks aparecem;
|
|
243
|
+
- ícone sozinho no split parecia sujeira: grande, num disco; regra para preferir gráfico/esquema do conceito;
|
|
244
|
+
- statement com parágrafo em letra de título: tamanho pelo comprimento; layout novo `definition` (verbete) para
|
|
245
|
+
"o que é X" (termo, origem em partes, definição, ícone);
|
|
246
|
+
- layout image com figura inteira: título no alto e legenda pequena embaixo (não a frase gigante);
|
|
247
|
+
- faixas claras fora da capa na apresentação: slide com moldura até a borda (canvas, mestre) tem fundo escuro fora;
|
|
248
|
+
- erros de digitação ("Méodo", "Refrências"): quem escreve confere a ortografia e a conferência visual aponta.
|
|
249
|
+
- Rodada colorida 7381869 (02/10, 48 min): nenhum original voltou ao lado, mas 4 lotes perderam a correção (YAML
|
|
250
|
+
quebrado: `mudou: "Ajute" corrigido…` e texto com ": " que segue na linha de baixo; a correção desistia na 1ª) e 4
|
|
251
|
+
ficaram sem conferência visual (sem JSON duas vezes). Agora: o conserto de YAML pega os dois casos; a correção
|
|
252
|
+
volta com o erro e tenta de novo; a visão sem JSON confere em duas metades. `$2$` (número sozinho) é fórmula;
|
|
253
|
+
`t~c~` e `m^2^` (índice/expoente, a IA usa sozinha) desenham.
|
|
254
|
+
- **As rodadas "Flash" de 01-10 e 02-10 escreveram com o Pro**: o `modelrelay serve` não relê o config editado à mão
|
|
255
|
+
(só o salvo pela tela dele) e seguia com `text = deepseek-v4-pro`. Renomeadas para "Pro · rodada…". O Pro (pelo
|
|
256
|
+
OpenRouter) come letras ao escrever, ~0,5% das palavras ("Ajute", "probailidade", 40 na melhorada Pro); o Flash,
|
|
257
|
+
medido na mesma tarefa, nenhuma. A conferência por código (`typosOf`: palavra do original com uma letra a menos no
|
|
258
|
+
meio, ou sem acento) vai como DICA na correção (acha também palavras certas: "estão" de "gestão"). modelrelay 0.2.1:
|
|
259
|
+
o fim do stream diz o modelo resolvido (o relatório mostrava só "text"); falta publicar no PyPI.
|
|
260
|
+
- Na mesma rodada: kicker `^^…^^` sumia nos temas com pílula (oceano, sinal…: a ênfase tinha a cor da pílula; a
|
|
261
|
+
"pílula vazia" do ciclo). Cartões da mesma grade encolhiam cada um por si (`fitWide`, palavra comprida num cartão
|
|
262
|
+
estreito) e ficavam de tamanhos diferentes: agora os irmãos ficam com o menor.
|
|
263
|
+
Gráfico de linhas: o eixo arredondava para inteiro (0 a 1 mostrava só "0" e "1"): marcações redondas (`niceTicks`,
|
|
264
|
+
com as casas do passo); linhas que terminam juntas (as curvas hipsométricas em 1) empilhavam os nomes: legenda em
|
|
265
|
+
cima (também com `legend: true`); rótulo numérico do eixo x com vírgula. Rodapé numa linha só (reticências).
|
|
266
|
+
- Pedido (02/10): figura de xerox/escaneada não é para virar diagrama nem ficar feia: **redesenhar como ilustração
|
|
267
|
+
com o modelo de imagem**, a partir dela. A visão marca `qualidade: ruim`; o escritor pede `image_prompt` +
|
|
268
|
+
`image_ref` (a figura original como base); o lote gera em `imagens/ia/` ANTES da conferência visual (que compara
|
|
269
|
+
o redesenho com o original); falhou, volta a figura de base. Teste à mão com o mapa de ruas (image8): pedindo
|
|
270
|
+
"contornar por cima, mesma proporção, rótulo letra por letra" sai fiel (erra 2 ou 3 rótulos); sem isso, o modelo
|
|
271
|
+
reenquadra e inventa rótulos. Também: em deck novo, pedido que não fala de imagem → a IA decide onde ilustrar
|
|
272
|
+
(antes nunca gerava). Paralelismo do transform: 8 lotes (até 16).
|
|
273
|
+
- Pedidos de 02/10, analisados slide a slide (decks em `Pedidos de teste/`):
|
|
274
|
+
- **brigadeiro "one page tipo Nature"**: a IA usou o `onepage` (de projeto: jornada, problema, solução) e a receita
|
|
275
|
+
saiu "brigadeiro de festa × gourmet", letra miúda, sem ilustração. Layout novo **`poster`**: ilustração principal
|
|
276
|
+
e painéis com letra (a, b, c), desenho, texto curto, números e setas; a referência manda usar este para
|
|
277
|
+
infográfico de uma página. Na versão 2 a IA usou o pôster, mas pôs título/tema/paleta dentro de `deck:` (o jeito
|
|
278
|
+
do patch) e o deck saiu "Nova apresentação" no tema padrão: a geração agora entende o `deck:`. Com ilustração
|
|
279
|
+
principal, no máximo 3 colunas (2 até 4 painéis).
|
|
280
|
+
- **regressão logística para 11 anos**: a versão 1 dizia "olha as pistas, dá uma nota, responde" sem o
|
|
281
|
+
mecanismo. Regra no prompt de geração: ensinar como algo funciona = o mecanismo inteiro, um exemplo de números do
|
|
282
|
+
começo ao fim, a conta de cada passo, uma simulação e uma rodada do ajuste; criança: simplificar as palavras,
|
|
283
|
+
nunca os passos. A versão 2 ensina (pontos por pista, soma, curva em S, 50%, ajuste, calculadora).
|
|
284
|
+
- motor: `:x:` (ícone de uma letra) no diagrama; `{ text: nuvens, vento, umidade }` virava campos vazios;
|
|
285
|
+
unidade `%` quebrava a fórmula do exercício resolvido; passos anteriores miúdos mesmo com espaço (agora só quando
|
|
286
|
+
não cabem); compare com texto curto virava dois cartões vazios do tamanho do slide; eixo do Plotly com vírgula;
|
|
287
|
+
ilustração gerada sem `fit` (era sempre `cover` e cortava a criança da capa); gráficos empilhados no `blocks`
|
|
288
|
+
(rótulo + gráfico vira título; dois ou mais lado a lado); `$1 - P(X \geq x)$` cru (regra do Pandoc para `$`);
|
|
289
|
+
anos no eixo sem ponto de milhar.
|
|
290
|
+
- rodada colorida com o Flash de verdade (1107fd1, 72 slides): nenhum lote falhou, 1 erro de grafia ("LENCOL").
|
|
291
|
+
- rodada com redesenho (ddde26a, 102 slides): só 1 figura redesenhada, porque a visão marcou 1 de 72 como "ruim"
|
|
292
|
+
(achou boa até o mapa de xerox) e a regra só valia para figura específica (o ciclo da água, genérico, virava
|
|
293
|
+
diagrama). Agora a visão diz a `aparencia` (digital, foto, escaneada, pixelada) e ILUSTRAÇÃO escaneada ou
|
|
294
|
+
pixelada, genérica ou específica, volta como ilustração. Ilustração nova sai sem texto (o modelo escrevia
|
|
295
|
+
rótulos em inglês e palavras sem sentido); o redesenho mantém os rótulos.
|
|
296
|
+
- na mesma rodada: correção sem bloco ("nada a corrigir") contava como falha → fica como está; lote cuja
|
|
297
|
+
resposta parava no meio perdia os itens → os que faltaram vão de novo, um por vez. Respostas que não serviram
|
|
298
|
+
ficam em `.sagadeck/transform/falhas/` (as 40 últimas).
|
|
299
|
+
- Casos de 02/10 (decks em `Pedidos de teste/`):
|
|
300
|
+
- **Apple prateado**: o `prata` (fiel ao branco da Apple de hoje) achado sem graça. Tema novo **`aluminio`**: a cara
|
|
301
|
+
dos lançamentos de iPhone e iPad de 2020-2021 (prata metálico com brilho de estúdio, alumínio escovado, título
|
|
302
|
+
cromado com a cor sólida em `color` para o fiscal medir, disco de metal polido na capa e na seção, cartões de
|
|
303
|
+
alumínio com chanfro, seção em azul-pacífico, escuro em grafite).
|
|
304
|
+
- **história dos videogames em 5 slides, temática, o último como mapa de Mario Kart visto de cima**: saiu no tema
|
|
305
|
+
alegre genérico e o último era um ciclo de bolinhas. Infográfico novo **`pista`** (circuito visto de cima: grama,
|
|
306
|
+
zebra, asfalto, largada quadriculada, caixas de item; os itens como marcos da volta e as placas em fila em cima e
|
|
307
|
+
embaixo, sem encavalar) e tema **`arcade`** (tela de tubo com linhas de varredura, neon, títulos em Press Start 2P,
|
|
308
|
+
rótulos em VT323, cartões de 8 bits, chão de tijolos na capa; fontes OFL embutidas).
|
|
309
|
+
- **transformers denso como aula**: bom de conteúdo (intuição, tokens, atenção com números, softmax, Python, tabela
|
|
310
|
+
da próxima palavra, temperatura, perda, limites). Ficou para depois: fluxo de 10 a 12 caixas em fila sai miúdo.
|
|
311
|
+
- **calendário dos próximos filmes da Marvel** (pesquisa): a IA fez linha do tempo porque não havia calendário.
|
|
312
|
+
Layout novo **`calendar`**: um cartão por mês com evento, o mini calendário com os dias marcados na cor do tipo
|
|
313
|
+
(Filme, Série: cores de item do tema, com legenda), a lista embaixo e o cartão "sem data". A versão nova da
|
|
314
|
+
pesquisa leu 7 fontes e montou o calendário de verdade.
|
|
315
|
+
- correção: a igualdade de tamanho entre cartões irmãos agrupava pela primeira classe do texto, que às vezes é a
|
|
316
|
+
genérica `t` (todo texto do cartão ia para o menor: o mês do calendário com 15 px); agora agrupa pelo papel.
|
|
317
|
+
- **versão escalafobética da aula da Maria** (imagens realistas e tecnológicas, gráficos de ficção científica sem
|
|
318
|
+
néon, 3D bonito como um bloco de terreno): tema novo **`relevo`** (grafite profundo, curvas de nível, cantoneiras
|
|
319
|
+
de mira, vidro fosco, rótulos técnicos em monoespaçada, título leve). A IA escolheu o relevo, gerou 11 ilustrações 3D realistas
|
|
320
|
+
e 3 gráficos 3D; mas pôs a paleta `safira` (clara) e o texto saiu escuro no fundo escuro: as peles com fundo
|
|
321
|
+
desenhado (relevo, arcade, aluminio) pintavam cores fixas e ignoravam a paleta; o fiscal não viu (mede contra a
|
|
322
|
+
cor declarada). Agora o fundo, o metal e o vidro saem de --bg/--fg/--hi/--surface; `test/temas-paleta.test.js`
|
|
323
|
+
mede o PIXEL do fundo (relevo+safira dava 1,22). A referência avisa que paleta clara deixa o tema escuro claro.
|
|
324
|
+
- Infográfico: o palco (1680 × 700) cabe na altura que sobra quando há algo no `add` (vazava por baixo do aviso;
|
|
325
|
+
`fitStages`); as caixas de texto dele encolhem só pelo próprio tamanho (`data-fit-self`: a descrição caía para 13 px
|
|
326
|
+
por causa de outro texto); o texto do `aviso` tem `.t` (o ajuste e o fiscal não o viam). Fiscal lê `color(srgb …)`
|
|
327
|
+
(color-mix) de 0 a 1 (dava "baixo contraste" em texto escuro no cinza-claro); rótulos do `solution` com 20 px.
|
|
328
|
+
- Fiscal final (01/10): melhorada Flash 0, recriada Flash 0, melhorada Pro 5, recriada Pro 7. O resto é conteúdo
|
|
329
|
+
grande demais (exercício com uma tabela enorme por passo, que nem a 60% cabe: dividir) e letra miúda pedida no
|
|
330
|
+
slide; numa transformação nova o fiscal devolve isso para a IA.
|
|
331
|
+
- Testes: `fit-wide.test.js`, `check.test.js`, faixa em `style.test.js`, tabela em `markup-math.test.js`, solution em
|
|
332
|
+
`lessons.test.js`, paralelo e fiscal em `transform.test.js`.
|
|
333
|
+
|
|
334
|
+
## Relatório do GPT, 1º pacote: identidade persistente e transformação confiável — 30/09/2026
|
|
335
|
+
|
|
336
|
+
- **Identidade**: todo slide tem `uid` (`src/uid.js`, dado no GET do deck e ao gravar; `data-uid` no HTML). A
|
|
337
|
+
chave do ajuste visual passou a ser pelo CONTEÚDO do objeto (`grupo~impressão`, `~2` para iguais), não pela
|
|
338
|
+
ordem: inserir, reordenar ou apagar outro objeto não passa o ajuste para quem não era. Chave antiga (`grupo-N`)
|
|
339
|
+
continua valendo e é convertida ao abrir (`src/studio/visual-keys.js`: `migrateLegacyKeys`); texto do objeto
|
|
340
|
+
mudou: o ajuste acompanha (`carryVisualEdits`, no POST do deck e no chat). A junção com a IA é por uid, campo a
|
|
341
|
+
campo, e os ajustes por chave (`merge-decks.js`). Teste: `test/identity.test.js`.
|
|
342
|
+
- **Transformação** (`src/ai/transform.js`): tarefa persistente em `.sagadeck/transform/tarefa-<modo>.json` (salva a
|
|
343
|
+
cada etapa e bloco; pedir de novo retoma sem replanejar; o melhorar retomado parte de `original/original.yaml`);
|
|
344
|
+
Parar de verdade (signal até o `fetch` do modelo: `AbortSignal.any` no llm.js; botão Parar na bolha do chat;
|
|
345
|
+
`/api/ai/transform/cancel`); a tarefa segue no servidor se o navegador fechar e a página reaberta acompanha
|
|
346
|
+
(`/api/ai/transform/status`); limites de chamadas, tokens e minutos (`SAGADECK_TRANSFORM_CALLS/TOKENS/MINUTES`)
|
|
347
|
+
com resultado parcial (o que não saiu fica como no original); cache das figuras pela foto (sha1 + versão da
|
|
348
|
+
análise; falha não entra); conferência visual de novo depois de cada correção; faltou fato do original mesmo
|
|
349
|
+
depois da correção: o original fica e a proposta vem `review: pendente` (aceitar tira o original do par,
|
|
350
|
+
desfazer tira a proposta); problema de desenho: `revisar`; estados da tarefa concluido / parcial / revisar; mapa
|
|
351
|
+
de cobertura `original/cobertura-<modo>.md/.json` (cada texto, fórmula, tabela, imagem e nota do original e em
|
|
352
|
+
que slide novo foi parar). Recriar retomado atualiza a MESMA apresentação nova.
|
|
353
|
+
- **Faixa Design** transbordava abaixo de ~1450 px (as duas galerias exigiam 3 cartões cada): agora encolhem até 1
|
|
354
|
+
cartão; dica "botão direito" saiu do rótulo (já está no tooltip do cartão); aviso das fontes limitado na janela
|
|
355
|
+
estreita. `test/ribbon-fit.test.js`: todas as abas de 1920 a 900 px (1093 = 1366 com zoom de 125%).
|
|
356
|
+
- **Instância local única** (`src/studio/instance.js`): porta 3517 no CLI, `npm run dev` e `sagadeck.studio()`;
|
|
357
|
+
`/api/instance` diz app, versão, processo e biblioteca; `sagadeck studio` com um aberto na porta (mesma
|
|
358
|
+
biblioteca e versão) só mostra a URL dele (com `?deck=` se pediu um deck); outra biblioteca ou versão: avisa e
|
|
359
|
+
não sobe outro. Versão e processo no log de início. `test/instance.test.js`.
|
|
360
|
+
- **Desfazer / refazer único** (`src/studio/public/history.js`): toda mudança do deck (formulário, tela, YAML,
|
|
361
|
+
assistente de IA, revisão, estilo, proporção, imagem gerada) é um passo com rótulo da origem; botões na barra de
|
|
362
|
+
título, Ctrl+Z / Ctrl+Y / Ctrl+Shift+Z e na busca de comandos; dentro de campo de texto vale o do campo; digitação
|
|
363
|
+
no mesmo campo junta num passo (mesmos caminhos no deck, 1,5 s), arrastar e apagar são dois; o editor visual
|
|
364
|
+
deixou de ter um desfazer próprio. `test/undo.test.js` e o passo da IA em `studio-ai.test.js`.
|
|
365
|
+
- **Ao vivo (Aula 1, 83 slides)**: o Flash caiu aos 5 min numa chamada: o `fetch` do Node desiste se os cabeçalhos
|
|
366
|
+
não chegam em 300 s. Agora a transformação chama em streaming (e mostra os caracteres chegando), a chamada comum
|
|
367
|
+
refaz em streaming nesse caso, erro passageiro (rede, 5xx, 429) tenta de novo uma vez e um bloco que não sai fica
|
|
368
|
+
registrado sem derrubar a tarefa (parcial; pedir de novo faz só ele).
|
|
369
|
+
- **Editor visual sem YAML** (`visual-editor.js`, `inspector.js`, `visual-edits.js`): alinhar (6) e distribuir;
|
|
370
|
+
copiar/colar estilo (Ctrl+Alt+C/V); travar (clique atravessa; `deco` do PowerPoint já vem travado); lista
|
|
371
|
+
**Objetos do slide** no inspetor (seleciona o travado, oculta, trava); guias magnéticas no arrasto (bordas e
|
|
372
|
+
centro do slide e dos objetos; Alt solta); trocar imagem com encaixe e ponto de foco (a chave do objeto não muda);
|
|
373
|
+
clique sem arrastar num dos selecionados fica só com ele. Texto, tabela e desenho importados do PowerPoint
|
|
374
|
+
(`tbx`, `tbx-table`, `drw`) passaram a ser objetos ajustáveis. `test/editor-tools.test.js`.
|
|
375
|
+
- **Palco × estudo** (`src/export/estudo.js`): campo `consulta:` do slide (escrito ao lado das anotações) só vai
|
|
376
|
+
no material de estudo; Arquivo › material de estudo (PDF ou HTML), "Ver o que o aluno recebe" na busca de
|
|
377
|
+
comandos, `sagadeck estudo deck.yaml [--html]`; cada slide inteiro (tudo revelado) + o texto de consulta, sem as
|
|
378
|
+
notas do apresentador. A referência pede para a IA pôr o aprofundamento em `consulta` numa palestra.
|
|
379
|
+
`test/estudo.test.js`.
|
|
380
|
+
- **Ao vivo, melhorar a Aula 1 pelo chat** (text = Pro × Flash; visão = Flash): Pro 47 min, 78 slides, 13
|
|
381
|
+
pendentes, 1 alerta; Flash 30 min (com queda e retomada), 85 slides, 6 pendentes, 5 alertas (achou a fórmula de
|
|
382
|
+
São Carlos do slide 68 e o Kf que não fecha nas unidades). Os dois: 394 e 402 de 454 trechos do original achados
|
|
383
|
+
como estavam. Defeitos do sagadeck achados e corrigidos: visão cortando o JSON (16 mil tokens, leitura tolerante,
|
|
384
|
+
refaz um a um); "MÁXIMA" virando sigla "XIMA"; palavra comum tomada por nome próprio; caminho de imagem com erro
|
|
385
|
+
de digitação; slide que quebra por formato sem dizer o que o layout espera; **linha do título do mestre cortando o
|
|
386
|
+
título e o texto** (faixa do título: `titleBand` em `src/master.js`, o cabeçalho vai acima do fio e o conteúdo
|
|
387
|
+
começa abaixo, vale para deck já gerado); capa repetindo logo e instituição da moldura e `dossier` (letra miúda)
|
|
388
|
+
numa palestra (regras no prompt; aprofundamento em `consulta`).
|
|
389
|
+
- **Arquitetura**: CI também no Windows (matriz ubuntu + windows); o CI estava vermelho desde o #59 (o motor
|
|
390
|
+
empacotado não achava o package.json); desempenho com 10/80/200 slides (`test/perf.test.js`: montar o HTML
|
|
391
|
+
200 slides < 0,1 s aqui; Studio com 200 abre em ~2,5 s e troca de slide em 0,1–0,4 s).
|
|
392
|
+
- **Interação didática: prever → rodar → explicar** no `algo` (`predict:` abre com a aposta e as opções,
|
|
393
|
+
`explain:` fecha com o porquê e a resposta; vale para o rastreado); campos no formulário; `lessons.test.js`.
|
|
394
|
+
- **Variedade de conteúdo**: cada tipo de slide com o exemplo e com conteúdo longo, em 16:9 e 4:3
|
|
395
|
+
(`test/lengths.test.js`): o longo só pode deixar a letra menor, nada de vazar/cortar/sobrepor novo. Hoje passa
|
|
396
|
+
em todos. Rótulo do grupo do Estilo: "Organização".
|
|
397
|
+
- **Tabela de verdade** (`src/table.js`): layout `table` e elemento `table` (head/rows, objetos, csv colado,
|
|
398
|
+
lista de listas); cabeçalho na cor do tema com texto legível pela luminância, números à direita (algarismos de
|
|
399
|
+
mesma largura), zebra, destaque de linha/coluna/célula, total, estilos faixa/zebra/linhas/colunas/cartão, cor
|
|
400
|
+
c1–c5; encolhe para caber. Studio: Novo slide › Tabela, Inserir › Tabela, grade no Formatar que cola do Excel.
|
|
401
|
+
Transformação: a visão transcreve tabela em imagem inteira e a IA reescreve como `table` (recorte de livro vira
|
|
402
|
+
tabela real). `test/table.test.js`.
|
|
403
|
+
- **Recriar ao vivo, 1ª rodada**: a internet caiu no meio (DNS do openrouter) e os dois ficaram parciais
|
|
404
|
+
(retomáveis). Achados corrigidos: YAML da IA com ": " sem aspas e LaTeX em aspas duplas (`rac` virava caractere
|
|
405
|
+
de controle em silêncio) → consertado no parse; a IA pediu `table` (não existia); conferência visual "sem JSON"
|
|
406
|
+
tenta de novo e, no recriar, não cobra a moldura do original; fórmula `$…$` no meio do texto (KaTeX) em qualquer
|
|
407
|
+
campo.
|
|
408
|
+
- **Do log de conselhos (outro assistente)**, o que fazia sentido: registro de auditoria dos comandos da IA
|
|
409
|
+
(`~/.sagadeck/comandos.log`, com segredo mascarado; recusado/aprovado/liberado, saída e tempo); travas (os 3
|
|
410
|
+
monolitos não crescem: `test/guards.test.js`; todo `visualEdits` do motor está na referência); **Brand Kit**:
|
|
411
|
+
estilo padrão da biblioteca (`.estilos/padrao.json`), deck novo em branco ou com IA sem tema já nasce nele
|
|
412
|
+
(Design › Estilo › Usar em toda apresentação nova). Já estava feito: Plotly/Mermaid só entram no HTML quando o
|
|
413
|
+
deck usa (deck simples ~200 KB). Não feito, com motivo: ESLint/Prettier (reformataria o repositório inteiro,
|
|
414
|
+
com o GPT na mesma pasta), link público na nuvem (precisa de infraestrutura; o uso no banco é offline).
|
|
415
|
+
- **Recriar ao vivo, concluído** (retomado 2–3 vezes; a retomada funcionou): Flash 86 slides, 63 min, 6
|
|
416
|
+
pendentes, 5 alertas certos, redesenho mais uniforme (tabelas reais, gráficos dos dados, calculadoras ao vivo de
|
|
417
|
+
Kirpich, Watt e Chow e da IDF de São Carlos); Pro 88 slides, 75 min, 12 pendentes (várias falsas, de títulos em
|
|
418
|
+
caixa alta), mais slides originais mantidos. Correções vindas disso: LaTeX com barras a mais/a menos no YAML,
|
|
419
|
+
`origem` ausente/extra, figura que cortava informação (`cover` → `contain` quando a proporção não bate),
|
|
420
|
+
tabela que encolhia por culpa de outro texto (`data-fit-self`), equações do `science` maiores, regras (fórmula
|
|
421
|
+
em LaTeX sem repetir a imagem; gráfico nunca em `full`), frase em caixa alta não vira sigla, original sem a
|
|
422
|
+
moldura antiga no recriar, resultado no deck certo mesmo trocando de apresentação no meio, painel do token que
|
|
423
|
+
redesenhava sozinho (falhava no CI do Windows), teste do Python em UTF-8 (era a falha "conhecida" do Windows).
|
|
424
|
+
- **Biblioteca, tópico "Aula 1 — Manejo de Águas Pluviais"**: original importado + 4 versões (melhorada/recriada
|
|
425
|
+
× Pro/Flash). O melhorar foi refeito com o código atual (a 1ª rodada era de antes das correções).
|
|
426
|
+
- Falta: P1 (quebrar `app.js`/`server.js`; só a exportação saiu), comparar as 4 versões ao vivo e relatar; depois
|
|
427
|
+
desfazer unificado, editor visual (trocar/recortar imagem, alinhar e distribuir, guias, travar mestre, camadas,
|
|
428
|
+
paleta de comandos), palco × consulta, variedade, interações didáticas, arquitetura/CI.
|
|
429
|
+
|
|
430
|
+
## Transformar a apresentação importada (melhorar / recriar) como tarefa agêntica — 30/09/2026
|
|
431
|
+
|
|
432
|
+
- Pergunta da pessoa: "as apresentações foram geradas 100% pelo sagadeck? o modo agêntico ia visualizar e arrumar
|
|
433
|
+
como você fez?" Resposta: não existiam ainda, e o ciclo ver → comparar → corrigir precisava ser do sagadeck.
|
|
434
|
+
- O chat decide (`transform: { mode, pedido }` no PATCH_FORMAT; só para deck importado — senão objeção soft).
|
|
435
|
+
`src/ai/transform.js`: VER (modelo de visão descreve as figuras: genérica × específica, dados legíveis; cache em
|
|
436
|
+
`.sagadeck/transform/`) → PLANEJAR (manter / juntar / escrever / novo; cobertura garantida por código) →
|
|
437
|
+
ESCREVER em blocos de 5 (cada slide com `origem` e `mudou`; imagens só as que existem; todo item precisa sair) →
|
|
438
|
+
CONFERIR (fatos por código: números nas duas leituras 0,385/0.385 e 10.000, siglas, nomes, imagens específicas;
|
|
439
|
+
desenho por visão: slide novo ao lado da foto do original) com uma rodada de correção → MONTAR (melhorar: estilo
|
|
440
|
+
extraído no mestre, `review` em cada mudança, `original/original.yaml`; recriar: deck novo no tópico, imagens
|
|
441
|
+
copiadas; item que não saiu entra como o original era).
|
|
442
|
+
- `src/import/merge.js`: juntar slides progressivos num que se monta por cliques (step/exit), sem IA.
|
|
443
|
+
- Modelos: papel `vision` no llm.js (chamada com imagem para o modelo de visão quando o de texto não enxerga).
|
|
444
|
+
modelrelay do sagadeck: text = deepseek/deepseek-v4-pro (escreve), vision = deepseek/deepseek-v4.1-flash (vê).
|
|
445
|
+
- O chat mostra o prompt dos slides importados resumido (`promptSpec`): o deck inteiro passaria de 300 mil tokens.
|
|
446
|
+
- Teste: `test/transform.test.js` (LLM falso roteado por etapa). Próximo: rodar os dois testes da Aula 1 de verdade,
|
|
447
|
+
com Pro e com Flash no texto, e comparar.
|
|
448
|
+
|
|
449
|
+
## Estilo da pessoa (mestre) e revisão das mudanças — 30/09/2026
|
|
450
|
+
|
|
451
|
+
- `master:` no deck (src/master.js): moldura em todo slide (`elements`, `cover` para capa/seção/fim), área do conteúdo,
|
|
452
|
+
cara do título; `field: slidenum` numera. Slide `canvas` e `master: false` ficam sem.
|
|
453
|
+
- `styleFromImport`: a moldura é o que se repete na mesma posição (mesmo copiado slide a slide — a Aula 1 faz assim);
|
|
454
|
+
aulas misturam fontes, então vale o que aparece em ≥20% dos slides; título/corpo pelos placeholders ou, sem eles, a
|
|
455
|
+
maior fonte no terço de cima; tema com as cores e fontes do original. Importação passou a deduplicar mídias.
|
|
456
|
+
- Biblioteca: `.estilos/<id>/estilo.yaml` + imagens (`saveStyle`, `listStyles`, `applyStyleTo` copia para
|
|
457
|
+
`imagens/estilo/<id>/`). Studio: Design › Estilo (aplicar / salvar o desta / tirar).
|
|
458
|
+
- `review: { status: novo|alterado, note, original }`: selo na miniatura, faixa com Ver original (a foto de
|
|
459
|
+
`original/slide-NN.png`), Aceitar e Desfazer (volta de `original/original.yaml`), Revisar › Mudanças com a lista.
|
|
460
|
+
- Teste: `test/style.test.js`.
|
|
461
|
+
|
|
462
|
+
## Importar PowerPoint fielmente (fase 1 do plano de importação) — 30/09/2026
|
|
463
|
+
|
|
464
|
+
- Casos reais (locais, fora do repositório): `Aula 1 - Conceitos Básico - 2026.pptx` (83 slides, 16:9, hidrologia,
|
|
465
|
+
ciclo desenhado com ~90 formas, texturas, tabelas, OLE, OMML) e `Intro01.pptx` (23 slides, 4:3, 4 mestres).
|
|
466
|
+
Comparados lado a lado com a foto do PowerPoint: praticamente iguais.
|
|
467
|
+
- `src/import/pptx.js` (leitor puro): herança slide > layout > mestre > txStyles > defaultTextStyle, tema por mestre,
|
|
468
|
+
cores com lumMod/tint/alpha, auto-ajuste (fontScale), marcadores (Wingdings/Symbol desenhados, inclusive dentro do
|
|
469
|
+
texto na faixa F0xx), formas prontas + desenho livre em SVG, texturas (blipFill em padrão) e hachuras, grupos
|
|
470
|
+
achatados, imagens com recorte e contorno, tabelas com estilo do arquivo ou embutido (Light/Medium Style), callouts,
|
|
471
|
+
gráficos simples, OLE (prévia), OMML → LaTeX (`src/import/omml.js`), anotações.
|
|
472
|
+
- `src/import/index.js`: grava mídias (WMF/EMF → PNG pelo Windows, `office.js`), cópia em `original/`, fotos do
|
|
473
|
+
original (PowerPoint numa cópia só leitura; ou LibreOffice → PDF → pdf.js, `pdf-render.js`) e recorta da foto o
|
|
474
|
+
que não sai igual (`crop.js`). `outlineOf` dá o roteiro para a IA.
|
|
475
|
+
- Entradas: `sagadeck importar arquivo.pptx`, Biblioteca › Importar apresentação (.pptx), `library.importOffice`.
|
|
476
|
+
- Elementos novos no motor: `textbox`, `table` (importada), `drawing`, `image.crop/flipH`.
|
|
477
|
+
- Teste: `test/import.test.js`. Próximo: estilo do usuário (mestre), marcas de mudança e os dois desafios da aula.
|
|
478
|
+
|
|
479
|
+
## Arquivos do projeto como no VS Code: código com realce, CSV como o Excel, PDF e DOCX — 30/09/2026
|
|
480
|
+
|
|
481
|
+
- Pedido: ver e editar .txt/.md/.json/.yaml com realce; ver PDF; ler .docx (editar só formato nativo, sem pesar);
|
|
482
|
+
CSV igual ao Excel, descobrindo vírgula, ponto e vírgula ou tab.
|
|
483
|
+
- `src/csv.js`: separador descoberto pela consistência das colunas (e a linha `sep=` do Excel), aspas com
|
|
484
|
+
separador/quebra de linha, BOM e fim de linha preservados ao gravar. O motor (`parseTable`) usa o mesmo leitor.
|
|
485
|
+
- `src/studio/public/viewers.js`: editor com números de linha, Tab/Shift+Tab e realce (json, yaml, md, js/ts, py,
|
|
486
|
+
css, html/xml/svg, sql, sh, ini, csv com cada coluna de uma cor); grade tipo Excel (letras/números, editar
|
|
487
|
+
digitando, Enter/Tab/setas, colar bloco do Excel, Ctrl+Z/Y, menu de linhas/colunas) que grava em
|
|
488
|
+
`/api/project/sheet-write` no formato original; PDF pelo pdf.js servido em `/vendor/` (sem ele, o leitor do
|
|
489
|
+
navegador); DOCX convertido pelo servidor (`src/docx.js`: títulos, listas, negrito, links, tabelas, imagens).
|
|
490
|
+
- Teste: `test/viewers.test.js`.
|
|
491
|
+
|
|
492
|
+
## Algoritmo rastreado genérico: qualquer código, como num depurador — 30/09/2026
|
|
493
|
+
|
|
494
|
+
- Pedido: além dos clássicos, mostrar um algoritmo qualquer (o que o professor inventou, árvore, grafo) com o
|
|
495
|
+
"inspect" das variáveis. Decisão: um núcleo genérico (execução rastreada) + catálogo por área crescendo em cima.
|
|
496
|
+
- `src/pytrace.js`: Python simples interpretado em JS, sem eval (def/recursão, class, if/while/for, listas,
|
|
497
|
+
tuplas, dict, set, fatias, compreensões, lambda, f-string, deque, heapq, math). Grava cada passo: linha, variáveis
|
|
498
|
+
de cada chamada, leituras/escritas por índice e atributo, comparações igual/diferente, print, expressões
|
|
499
|
+
observadas (`watch`). Comentário no fim da linha vira legenda (`{expr}` troca pelo valor); sem ele, a frase sai
|
|
500
|
+
com os valores (`v[j] > v[j + 1] → 5 > 3: sim.`), sem recalcular nada com efeito colateral.
|
|
501
|
+
- `src/trace-view.js`: desenho pelo tipo (barras, casas com ponteiros aprendidos, padrão alinhado sob o texto,
|
|
502
|
+
grade, tabela, grafo em camadas com visitados/fila/aresta da vez, árvore e lista ligada), código com a linha e
|
|
503
|
+
painel de variáveis por chamada (o que mudou acende). `view:` escolhe quando precisar.
|
|
504
|
+
- `src/algo-catalog.js`: naive, kmp, quicksearch (texto), bfs, dijkstra (grafos), bst (árvore). Algoritmo novo no
|
|
505
|
+
catálogo = mais um programa + a chamada com os dados do slide.
|
|
506
|
+
- Studio: o formulário do `algo` ganhou o catálogo e "Meu código (Python)" (programa + chamada).
|
|
507
|
+
- Teste: `test/trace.test.js` (interpretador, erros com linha, rastro, catálogo contra a busca ingênua em 40
|
|
508
|
+
textos, desenho de cada tipo, apresentação com Tocar, Studio gravando o programa).
|
|
509
|
+
|
|
510
|
+
## Proporção do slide: 16:9, 4:3, retrato e qualquer L:A — 30/09/2026
|
|
511
|
+
|
|
512
|
+
- `deck.aspect` (src/aspect.js): largura lógica fixa em 1920 e a altura acompanha (4:3 → 1440; 9:16 → 3413).
|
|
513
|
+
CSS usa `--sh`/`--aspect` (no `<html>` da apresentação e no Studio); runtime, desenho, fotos, PDF (página do
|
|
514
|
+
tamanho do slide) e PPTX (layout próprio, 13,333 pol de largura) leem o tamanho do deck.
|
|
515
|
+
- Trocar a proporção (Propriedades › Apresentação, com "Personalizada…") passa por `convertAspect`: o layout `canvas`
|
|
516
|
+
(y, h) e os deslocamentos do Studio (`visualEdits.dy`) são reescalados; o resto se ajusta sozinho.
|
|
517
|
+
- Retrato (`data-orient="portrait"`): o que era lado a lado vira pilha; grades com poucos itens ampliadas.
|
|
518
|
+
- Próximo: etapa 1 do plano de importar PPTX/PDF (leitura fiel + foto pelo PowerPoint / leitor de PDF do Windows).
|
|
519
|
+
|
|
520
|
+
## Aula: exercício resolvido, calculadora ao vivo, algoritmo animado; demos de hidráulica e algoritmos — 30/09/2026
|
|
521
|
+
|
|
522
|
+
- Exercício da pessoa: professor de hidráulica (Navier–Stokes, laminar → turbulento) e de computação (ordenação e
|
|
523
|
+
busca). O que já dava: equações, curvas com controles, comparação, código guiado, gráfico de complexidade. O que
|
|
524
|
+
frustraria: resolver o exercício passo a passo, uma calculadora para a turma mexer e ver o algoritmo rodando.
|
|
525
|
+
- `solution` (src/lessons.js): enunciado + dados + "pede-se"; um passo da conta por clique (os anteriores compactos,
|
|
526
|
+
a lista ancorada embaixo); resposta em destaque. Dado numérico vira LaTeX com vírgula decimal, milhar e 10 elevado.
|
|
527
|
+
- `calc` (src/lessons.js + src/runtime/calc.js, a mesma conta no motor e na apresentação): entradas com controle,
|
|
528
|
+
saídas por fórmula (nomes longos como `nu`, `eps` valem), `cases` por faixa (texto, cor e fórmula por faixa) e
|
|
529
|
+
régua (`scale`, log). Bug de caminho: rótulos da régua eram `.t` e se encostavam; o ajuste encolhia o slide a 61%.
|
|
530
|
+
- `algo` (src/algo-trace.js): o motor roda bubble/insertion/selection/merge/quick e busca linear/binária e grava os
|
|
531
|
+
passos (comparar, trocar, escrever, pivô, faixa, achou) + pseudocódigo com a linha da vez + contadores. Botão
|
|
532
|
+
Tocar genérico no runtime (`[data-autoplay]`).
|
|
533
|
+
- Fórmulas: `plot.xlog`/`ylog` (amostragem e eixos log; diagrama de Moody). Os títulos de eixo do deck não apagam
|
|
534
|
+
mais o tipo/faixa do eixo.
|
|
535
|
+
- Limite de palavras próprio: solution 140, calc 90, algo 60. Galeria: "Aula: exercícios e algoritmos".
|
|
536
|
+
- Demos "Aula de hidráulica" e "Aula de algoritmos"; cada demo da vitrine com tema, tom e figura de capa próprios
|
|
537
|
+
(antes todas iguais). Barra da esquerda abre sempre nos slides.
|
|
538
|
+
- Teste ao vivo: pedindo as duas aulas ao modelo, ele usou `solution`, `calc` e `algo` sozinho.
|
|
539
|
+
|
|
540
|
+
## Painel, menus de botão direito, "Deixar assim" que dura, dois usos do material — 30/09/2026
|
|
541
|
+
|
|
542
|
+
- "Deixar assim" grava `fiscalOk` (impressão digital do conteúdo do slide) no deck: sem aviso, contador nem
|
|
543
|
+
marcação até o slide mudar, inclusive depois de recarregar.
|
|
544
|
+
- `purpose` passa a ter dois usos na tela e na IA: `palestra` (para apresentar: letra grande, pouco texto) e
|
|
545
|
+
`consulta` (para estudar depois: conteúdo denso). aula/workshop/executiva de decks antigos continuam valendo.
|
|
546
|
+
- Painel direito abre no chat; fora dele, um atalho flutuante (direita, no meio) volta, com um ponto quando a IA
|
|
547
|
+
respondeu. `paneOnLoad` só existe para os testes antigos (que esperam o Formatar).
|
|
548
|
+
- Bug: trocar de slide com um objeto selecionado deixava o painel preso em Propriedades (sem os campos do carrossel,
|
|
549
|
+
do screenshot etc.). Seleção vazia por qualquer motivo volta ao Formatar; duplo clique fora do texto abre o
|
|
550
|
+
conteúdo; Propriedades tem "Editar o conteúdo do slide".
|
|
551
|
+
- Botão direito: no slide (conteúdo, IA, layout, arrumar, novo, duplicar, apresentar, excluir), no objeto
|
|
552
|
+
(propriedades, frente/trás, excluir) e na miniatura (mover, duplicar…). Escuta no documento pelo ponto do clique
|
|
553
|
+
(a pílula de texto flutua por cima e o editor redesenha ao apertar).
|
|
554
|
+
- Árvore no estilo VS Code: renomear e criar no próprio item (sem prompt), ações ao passar o mouse, setas/Enter/
|
|
555
|
+
F2/Delete, apagar sem pergunta (lixeira do projeto + Desfazer), menu com copiar caminho e enviar para cá.
|
|
556
|
+
- Carrossel em roda com fotos maiores (300 px; a ativa 1,8×); a IA pode gerar as fotos (`image_prompt` por item).
|
|
557
|
+
- Bug achado nos testes: o observador do selo do chat mexia na própria classe e travava a página em laço.
|
|
558
|
+
|
|
559
|
+
## Projeto no estilo VS Code, planilhas estilo JMP, esvaziar lixeira, demo de novidades — 30/09/2026
|
|
560
|
+
|
|
561
|
+
- Projeto = a pasta do deck (`src/studio/project.js`): `<nome>.yaml`, `imagens/`, `contexto/` (anexos, prints,
|
|
562
|
+
planilhas, `.md`) e `.sagadeck/` (conversa.json, cache/, lixeira/). `.sagadeck` e o `.yaml` são protegidos
|
|
563
|
+
(não se apagam nem renomeiam pelo Studio); caminho fora da pasta é recusado; apagar vai para
|
|
564
|
+
`.sagadeck/lixeira` com Desfazer. Deck solto numa pasta com outros decks não vira projeto. A conversa passou de
|
|
565
|
+
`<deck>.conversa.json` para `.sagadeck/conversa.json` (migra sozinha). O pacote `.sagadeck` continua levando só o
|
|
566
|
+
que o deck usa.
|
|
567
|
+
- Studio: barra da esquerda alterna Slides | Arquivos (árvore com criar, renomear F2, apagar Delete, enviar,
|
|
568
|
+
arrastar para mover/enviar). Abas no centro: Apresentação fixa; o `.yaml` abre com o slide ao lado e atualiza
|
|
569
|
+
enquanto digita; `.md` com prévia; imagem com "Usar num slide". Ctrl+V de print: na aba Arquivos só guarda em
|
|
570
|
+
`contexto/`; nos Slides abre o editor de screenshot e também guarda. Anexo do chat também vai para `contexto/`.
|
|
571
|
+
O texto de `contexto/` (md, csv, xlsx, pdf, docx…) vai para a IA como material (cache em `.sagadeck/cache`).
|
|
572
|
+
- Planilha (CSV/TSV/XLSX, várias abas, sem biblioteca: o xlsx é lido como zip): grade com o tipo de cada coluna
|
|
573
|
+
(tempo, número, porcentagem, categoria, texto) e sugestões com prévia (linha no tempo, barras ordenadas, rosca
|
|
574
|
+
de partes, colunas agrupadas, dispersão). "Sugerir com IA": o modelo recebe só o resumo das colunas, corrige tipos
|
|
575
|
+
e escolhe gráficos, títulos e eixos. "Inserir no slide" grava `from:`; "Atualizar da planilha" relê o arquivo.
|
|
576
|
+
Gráficos ganharam `xLabel`/`yLabel`; números de planilha entendem `40%` e `R$ 1.234,5`.
|
|
577
|
+
- Biblioteca: "Esvaziar lixeira" (com confirmação). Vitrine: "Novidades" (`model-novidades`), um slide de cada
|
|
578
|
+
recurso novo; a cópia traz `contexto/vendas.csv` e `contexto/leia-me.md`.
|
|
579
|
+
|
|
580
|
+
## Zoom lento no foco e animações menos secas — 30/09/2026
|
|
581
|
+
|
|
582
|
+
- Spotlight: `zoom: true` (slide) ou `zoom: N` / `false` (foco). Camada `.spotlight-zoom` com imagem + regiões; o
|
|
583
|
+
runtime (`zoomSpotlight`) centraliza o foco sem mostrar fundo vazio, 1,8 s com aceleração suave; a borda do
|
|
584
|
+
destaque não engorda. PDF/export e "sem animação" ficam na imagem inteira.
|
|
585
|
+
- Modo padrão (subtle) era só fade de 0,38 s e passos de 0,25 s sem movimento ("seco"). Agora: entrada sobe 14 px
|
|
586
|
+
com o desfoque sumindo (0,85 s, escalonado), cliques com o mesmo movimento, troca de slide com fade de 0,6 s e
|
|
587
|
+
assentamento de escala, painéis de etapa suaves. Export sem transformações.
|
|
588
|
+
|
|
589
|
+
## Carrossel em semicírculo e em anéis — 30/09/2026
|
|
590
|
+
|
|
591
|
+
- `carousel` (`src/carousel.js`): um item por clique com foto e texto. `arc`: roda com o centro fora do slide gira até
|
|
592
|
+
o item (que cresce); o texto sai pela esquerda e o novo entra da esquerda, sobrepondo. `rings`: a foto em anel
|
|
593
|
+
externo (anti-horário) e disco interno (horário) que travam formando a foto; o texto sobe junto.
|
|
594
|
+
- Runtime: `renderLesson` põe `--lesson-i` no slide e `active`/`past` em `[data-lesson-k]` (genérico).
|
|
595
|
+
- Sem foto: paisagens desenhadas em SVG (offline). Foto da pessoa: `image:` ou Escolher foto no Formatar.
|
|
596
|
+
|
|
597
|
+
## Dinâmicas a dois: duelo de commits, dois terminais, turnos — 30/09/2026
|
|
598
|
+
|
|
599
|
+
- Pedido da pessoa (brainstorm de dinâmicas para aula de Git; a ideia 2, QR ao vivo, ficou de fora).
|
|
600
|
+
- `src/dynamics/git-sim.js`: simulador (duas pessoas + origin/main + um arquivo). O slide só diz o que cada um faz;
|
|
601
|
+
ele calcula push recusado, fast-forward, merge automático, conflito (merge a três por linha, com marcadores),
|
|
602
|
+
commit de dois pais, `git log --graph` e o grafo em SVG. Linhas mudadas no turno por LCS.
|
|
603
|
+
- `duel`, `terminals`, `turns` (`src/dynamics/layouts.js`): um quadro por clique (data-lesson). Aposta
|
|
604
|
+
(`bet:`) vira enquete antes do primeiro pull que decide; o quadro seguinte carimba "Deu conflito!". Terminal digita
|
|
605
|
+
o comando. Galeria: categoria "Dinâmicas a dois". Formulário com "Linhas que muda" (2: texto).
|
|
606
|
+
|
|
607
|
+
## Criar com IA = o mesmo caminho do chat — 30/09/2026
|
|
608
|
+
|
|
609
|
+
- "Criar com IA" / "Deck com IA" saíam bem piores que pedir a mesma coisa no chat (teste da pessoa: "apresentação
|
|
610
|
+
bem humorada de como fritar um ovo como um chef"). A geração tinha caminho próprio: direção criativa sorteada,
|
|
611
|
+
regras rígidas de ritmo, temperatura 0,7, rodadas de enxugamento e de variedade, `autofixDeck` por cima.
|
|
612
|
+
- Agora `generateDeck` chama `editDeck` sobre um deck em branco (as mesmas regras, a mesma temperatura, uma chamada).
|
|
613
|
+
Ficam: pergunta de propósito (Preferências), autor, idioma, data, imagens (geradas depois), estilo escolhido e
|
|
614
|
+
materiais. Se a IA preferir perguntar, a pergunta volta com as opções.
|
|
615
|
+
- Bug achado no teste ao vivo (vale para o chat também): `{ text: Manteiga, mas sem fumaça }` partia o texto na
|
|
616
|
+
vírgula; chave com espaço e valor vazio volta a ser o fim do texto anterior (`rejoinFlowCommas`).
|
|
617
|
+
|
|
618
|
+
## Gráficos de verdade: fórmula livre, planilha que cola do Excel, CSV — 30/09/2026
|
|
619
|
+
|
|
620
|
+
- A pessoa reclamou (com razão) que o brainstorm dos gráficos ficou no papel e que o slide científico só plotava duas
|
|
621
|
+
curvas prontas; e que até elas sumiam (a galeria e as miniaturas não montam o Plotly: o quadro ficava vazio).
|
|
622
|
+
- **Fórmulas e funções** (`science`, novo nome): `plot.functions` com a fórmula em texto (`a*sin(b*x)`, `x² - 2x + 1`,
|
|
623
|
+
`h0 - g*x^2/2`). Compilador próprio em `src/runtime/formula.js` (sem eval; tabelas sem protótipo; roda na
|
|
624
|
+
apresentação e no Node). Letra que não é x vira **controle deslizante** que redesenha a curva ao vivo
|
|
625
|
+
(`plot.params` dá valor, limites e nome). `plot.points` (colado do Excel, CSV em texto ou arquivo ao lado do deck),
|
|
626
|
+
`plot.surface` (z = f(x, y)). O slide traz uma **prévia desenhada** em SVG (miniatura, galeria, PDF); o Plotly
|
|
627
|
+
entra por cima. Fórmula com erro: o gráfico diz o erro e o fiscal recebe o aviso. `preset` antigo vira fórmula.
|
|
628
|
+
- **Gráfico de dados** (`chart`, novo nome): planilha no Formatar (Rótulo + uma coluna por série); Ctrl+V do Excel em
|
|
629
|
+
qualquer célula preenche a partir dela, primeira linha com texto vira nome de série; número brasileiro (1.234,5);
|
|
630
|
+
Importar CSV. Várias séries em barras/colunas = **agrupadas** com legenda (nativo no PPTX). `csv: dados/x.csv`
|
|
631
|
+
lê o arquivo ao lado do deck.
|
|
632
|
+
- Falta do brainstorm: gráfico sugerido pela IA a partir de tabela colada no chat (hoje o chat já monta `chart`, mas
|
|
633
|
+
sem sugestão de tipo com prévia).
|
|
634
|
+
|
|
635
|
+
## Miniaturas inteiras, Arrumar layout único, abas do painel — 29/09/2026
|
|
636
|
+
|
|
637
|
+
- Miniaturas do trilho cortavam o slide: a escala era fixa (0,09 = 173 px) num quadro de 156 px. Agora um
|
|
638
|
+
`ResizeObserver` põe `--thumb-scale` pela largura do quadro.
|
|
639
|
+
- Revisar: "Corrigir layout" e "Arrumar" eram o mesmo `triggerAutofix` (o Arrumar só somava uma animação e um aviso
|
|
640
|
+
que prometia alinhar). Ficou um botão, **Arrumar layout**, que diz o que fez, tem Desfazer e avisa quando não há
|
|
641
|
+
nada a arrumar.
|
|
642
|
+
- Abas do painel lateral: a aberta mostra o nome, as outras só o ícone (as quatro cabem). Avançado é a última aba da
|
|
643
|
+
faixa; os grupos de especialista do Início vêm logo depois dos outros (não vão mais para a outra ponta).
|
|
644
|
+
- Variáveis: grade ocupando a aba, sem texto de manual, coluna **Tipo** (Normal/Segredo) que move a variável entre
|
|
645
|
+
`vars:` e `secrets:`.
|
|
646
|
+
|
|
647
|
+
## Fase 3 do SagaStudio: inspetor de propriedades — 29/09/2026
|
|
648
|
+
|
|
649
|
+
- `src/studio/public/inspector.js` (aba **Propriedades**): grade compacta com categorias recolhíveis (lembradas no
|
|
650
|
+
navegador). Objeto: só o que faz sentido (texto, forma desenhada ou reta, imagem); vários selecionados mostram o
|
|
651
|
+
valor comum ou "vários" e a edição vale para todos. Slide e Apresentação sempre (layout, tom, textura, densidade,
|
|
652
|
+
tempo, transição, limite de palavras, rodapé, tema/paleta só do slide, fundo; purpose, tema, paleta, destaque,
|
|
653
|
+
animações, duração, autor, data, `fit`). Cada linha alterada tem "voltar ao padrão". Selecionar um objeto com o
|
|
654
|
+
painel em Formatar leva para Propriedades (como no Figma).
|
|
655
|
+
- Motor (`src/visual-edits.js`): novas chaves de `visualEdits` (peso, itálico, alinhamento, entrelinha, espaçamento,
|
|
656
|
+
maiúsculas, rotação, opacidade, sombra, cantos, contorno, `step`, `anim`), só valores de lista ou números. Formas
|
|
657
|
+
desenhadas leem `--shape-fill/--shape-stroke/--shape-sw`.
|
|
658
|
+
- Editor visual: `SagaVisual.selection/edits/setProp/clearEdits/onSelect/select` para o inspetor (com Desfazer).
|
|
659
|
+
- Bug: painel de avisos do fiscal e menu dos temas usavam `var(--panel, #fff)` (variável inexistente): fundo branco
|
|
660
|
+
com texto claro no tema escuro. Agora `var(--chrome)`; teste de contraste no tema escuro.
|
|
661
|
+
|
|
662
|
+
## Fase 2 do SagaStudio: a IA sabe para que serve o material — 29/09/2026
|
|
663
|
+
|
|
664
|
+
- Causa do "material de consulta que saiu palestra": o prompt de geração era só de palestra ("pouco texto, detalhe
|
|
665
|
+
em notes, interação, slides de impacto"), a rodada de enxugar cortava para 75% de 40 palavras, a de variedade
|
|
666
|
+
trocava explicação por slide de impacto e a auto-correção movia o corpo para as notas acima do limite.
|
|
667
|
+
- `purpose` no deck (`src/purpose.js`): consulta 220 palavras, aula 160, workshop 110, palestra/executiva 40; motor,
|
|
668
|
+
auto-correção, IA e Studio usam `wordLimit`. Consulta/aula: explicação no slide, sem quiz/seção vazia/número de
|
|
669
|
+
impacto, sem a rodada de variedade; notes curtas.
|
|
670
|
+
- Decisão pelo modelo (regra do projeto): com Preferências › perguntar ligado, `decidePurpose` faz uma chamada curta
|
|
671
|
+
(JSON) antes de gerar; no pedido longo o modelo tendia a supor. Ambíguo (workshop sem dizer se fica com o pessoal):
|
|
672
|
+
devolve pergunta com opções; biblioteca e "Deck com IA" mostram e geram de novo com a resposta. Quantidade de texto
|
|
673
|
+
dita com todas as letras vence o tipo (grava `maxWords`) e não pergunta. Testes ao vivo em `ai-live.test.js`.
|
|
674
|
+
- Contra invenção: nada de número/data/nome sem fonte; `date` = dia da criação; `author` das Preferências.
|
|
675
|
+
- Temas `manual` (claro) e `manual-noite` (escuro), com `pair`: Design › Versão clara/escura; PDF no claro
|
|
676
|
+
(Preferências › Exportação, `lightVariant`). Estilo "Documentação técnica" no Criar com IA. `gitGraph` na referência.
|
|
677
|
+
- IA › **Material de consulta**: pede ao assistente para reescrever o deck como material para distribuir.
|
|
678
|
+
|
|
679
|
+
## Fase 1 do SagaStudio: código nunca cortado, fiscal, Preferências — 29/09/2026
|
|
680
|
+
|
|
681
|
+
- Achado do exercício (material de Git): o slide `code` usa o editor do codewalk, que tinha `overflow:auto` sem barra
|
|
682
|
+
à vista, e o PDF não rola: 18 de 28 linhas sumiam. Agora `fitCode` (`src/runtime/fit.js`) quebra linha longa,
|
|
683
|
+
encolhe até `fit.minCodePt` (pt; `data-min-code` no slide, em px) e, se nem assim couber, rola e marca
|
|
684
|
+
`data-code-cut`. O fiscal do Studio acusa ("Código não coube") e oferece **Dividir em dois slides** (destaques de
|
|
685
|
+
linha acompanham). A 10 pt cabem ~16 linhas num slide de código.
|
|
686
|
+
- Vazamento: cartões, itens da grade adaptável e código passam a contar em `leakingIn` e no fiscal (o slide de grade
|
|
687
|
+
invadia o rodapé sem aviso).
|
|
688
|
+
- Preferências (`src/preferences.js`, `~/.sagadeck/preferencias.json` ou `SAGADECK_PREFERENCIAS`; `/api/preferences`):
|
|
689
|
+
tela com busca, seções e gravação automática. Texto e código (mínimos em pt, quebrar linha) valem para o motor via
|
|
690
|
+
`setFitDefaults`; o deck (`fit:`) vence. Editor (tema da interface, guias, marcas do fiscal) neste navegador.
|
|
691
|
+
- Próximas fases: IA decide o tipo de material (e pergunta), temas técnicos claro/escuro, Object Inspector.
|
|
692
|
+
|
|
693
|
+
## Marca, faixa sem "Mais opções", fonte que encolhia, grade de variáveis — 29/09/2026
|
|
694
|
+
|
|
695
|
+
- Marca: "CREATIVE STUDIO" e um logotipo com significado (um deck, dois slides, com o "apresentar" no da frente) na
|
|
696
|
+
biblioteca e no editor (antes: um "Z" e o ícone de camadas).
|
|
697
|
+
- Faixa: sem o botão "Mais opções" (modo simples saiu); tudo à vista, e os grupos `[data-adv]` ficam à direita da aba.
|
|
698
|
+
- Bug: tamanho escolhido num texto com ajuste para caber (`data-fit`, ex.: o "01" das coleções) era encolhido pelo
|
|
699
|
+
`fit.js` e o campo mostrava o valor encolhido. Agora `visualEdits.size` marca `data-vsize` e o ajuste pula.
|
|
700
|
+
- Bug: seletor com o padrão igual a uma opção ("Síncrono") aparecia duplicado; a opção passa a ser o padrão.
|
|
701
|
+
- Variáveis: grade no estilo Object Inspector (linha de 22 px, letra 12 px, célula = campo; grava ao sair/Enter, Esc
|
|
702
|
+
desfaz, última linha cria, lixeira na linha). Editar um ambiente de exemplo (ENSAIO) cria a cópia dele no arquivo
|
|
703
|
+
(`adopt` em `src/api-client.js`), em vez de recusar.
|
|
704
|
+
|
|
705
|
+
## Objetos: cor, preenchimento, "Enviar para trás"; vitrine clara; Criar com IA unificado — 29/09/2026
|
|
706
|
+
|
|
707
|
+
- Bug: "Atrás" mandava a forma para `z-index` negativo, atrás do fundo do slide (sumia e não dava para excluir). Agora
|
|
708
|
+
`.safe`/`.free` isolam o empilhamento (`isolation:isolate`) e o clique pega o objeto mais de cima naquele ponto
|
|
709
|
+
atravessando as caixas transparentes do layout (`objectAt` com `elementsFromPoint`); Tab/Shift+Tab passam de objeto.
|
|
710
|
+
- Bug: a cor só mexia no texto; formas ganharam **Preenchimento** (`visualEdits.fill`: `--shape-fill` nos desenhos SVG,
|
|
711
|
+
fundo nas formas retas). A barra do objeto flutua junto da seleção, em qualquer aba, com rótulos e ícones; a cor
|
|
712
|
+
muda ao vivo e grava ao soltar.
|
|
713
|
+
- Vitrine Modelo pronto: capa desenhada de verdade (`/api/library/gallery-cover`, cache em `.cache/vitrine`), dois
|
|
714
|
+
grupos pelo uso ("Visuais para começar", "Recursos do SagaDeck"), sem nome repetido (o estilo "Essencial" virou
|
|
715
|
+
"Uma ideia por vez"). Estilos e exemplos também abrem em prévia (`galleryEntry` no servidor, chave `exp-*`/`example-*`).
|
|
716
|
+
- Nova: "Descrever com IA" e "A partir de um arquivo ou link" viraram **Criar com IA**; o modal abre primeiro (sem
|
|
717
|
+
abrir o seletor de arquivo) e aceita arrastar arquivos.
|
|
718
|
+
|
|
719
|
+
## Modelos abrem em prévia (cópia só na primeira mudança) e limpeza da biblioteca — 29/09/2026
|
|
720
|
+
|
|
721
|
+
- Decisão: modelo/demo de fábrica é **vitrine**, não arquivo. `Modelo pronto` abre `editor?model=<tipo>&topic=…`
|
|
722
|
+
(`/api/library/decks/model-preview`): o deck vive só na memória do Studio (`W.preview`, `W.file = null`), com as
|
|
723
|
+
imagens lidas de `src/studio/assets/imagens/` (movidas para lá). A primeira mudança que chega em `/api/deck` (ou
|
|
724
|
+
`/api/library/decks/model-use`, botão **Usar como base**, ou a IA indo gravar imagens) cria a cópia no tópico de
|
|
725
|
+
origem (padrão `Modelos`) com as imagens; a URL vira `?deck=<id>`. Abrir, navegar e apresentar não gravam nada.
|
|
726
|
+
- "Abrir demos completos" (Avançado) abre `biblioteca?galeria=demo`, a vitrine filtrada nas demonstrações.
|
|
727
|
+
- Limpeza: as cópias sem edição (iguais ao modelo de fábrica) foram para a Lixeira; as editadas ficaram.
|
|
728
|
+
- Testes: `studio.test.js` (prévia sem arquivo e com imagem; primeira edição cria a cópia com a imagem; o modelo
|
|
729
|
+
continua igual; Usar como base; coleções via prévia; demo avançado e `?galeria=demo`).
|
|
730
|
+
|
|
731
|
+
## Seleção de objetos, IA local, Novo slide único e Animações — 29/09/2026
|
|
732
|
+
|
|
733
|
+
- Seleção como no Google Slides/Canva (`visual-editor.js`): um clique em qualquer ponto do objeto seleciona (texto
|
|
734
|
+
também); clicar de novo no texto selecionado ou duplo clique escreve; retângulo numa área vazia seleciona vários
|
|
735
|
+
(o de fora ganha do de dentro); Shift+clique soma; arrastar, setas, Delete e a barra valem para todos. Bug que
|
|
736
|
+
motivou: caixa de texto livre movida não se deixava selecionar (o clique virava escrita). O retângulo converte a
|
|
737
|
+
escala do palco (zoom).
|
|
738
|
+
- IA: o `sagadeck studio` em Node sobe o `modelrelay serve` junto (`src/ai/relay.js`), como o sagadeck do pip; nada
|
|
739
|
+
sobe com `SAGADECK_LLM_URL`, `SAGADECK_NO_RELAY=1`, `--multiuser` ou alguém já na 8765. Nesta máquina o modelrelay
|
|
740
|
+
não estava instalado: instalado editável do clone (0.2.0). Teste: `relay-autostart.test.js` (spawn falso).
|
|
741
|
+
- "Novo slide" só no Início, botão dividido (em cima: em branco; embaixo: galeria de tipos); saiu do Inserir.
|
|
742
|
+
- Essencial/Equilibrado/Palco saiu do topo: menu **Apresentar ▾ › Animações** (Sem animação, Suaves, Expressivas).
|
|
743
|
+
|
|
744
|
+
## Novo slide × Layout × Inserir, formas, faixas do Design — 29/09/2026
|
|
745
|
+
|
|
746
|
+
- Decisão: **uma galeria só para criar slide** (a antiga "Modelos", agora "Escolher tipo" no Início e "Novo slide" no
|
|
747
|
+
Inserir), com os 44 tipos em 9 categorias (`SLIDE_GROUPS` em `app.js`) e busca sem acento; Enter insere o primeiro.
|
|
748
|
+
**Layout** troca o formato do slide atual e usa as mesmas categorias. **Inserir** ficou só com o que entra no slide
|
|
749
|
+
atual (Texto, Formas, Imagem, Ícone, Diagrama de texto); os botões de tipo de slide e os atalhos do Avançado saíram.
|
|
750
|
+
- Formas: menu com 12 desenhos. O motor ganhou triângulo, losango, hexágono, estrela, seta, chevron e balão
|
|
751
|
+
(SVG com preenchimento e contorno, `bg` vira o preenchimento). "Desfazer objeto" saiu: Delete exclui, Ctrl+Z desfaz.
|
|
752
|
+
- Design: faixas de tema e paleta só com cartões inteiros e sem barra de rolagem; setas passam de página e "Ver
|
|
753
|
+
todos" abre a mesma galeria em grade (mesmos cartões: prévia no hover, clique, botão direito). A 1366 px cabem 3.
|
|
754
|
+
- Botão de tema claro/escuro do editor foi para o canto direito do topo, como na biblioteca.
|
|
755
|
+
- Testes: `engine.test.js` (formas), `studio.test.js` (galeria, busca, categorias, Status semanal pela galeria, menu
|
|
756
|
+
de formas + Delete, faixas do Design, posição do botão de tema); helper `novoSlide(p, tipo)` em `helpers.js`.
|
|
757
|
+
|
|
758
|
+
## Variáveis em tabela, ambientes protegidos e ajustes do editor — 29/09/2026
|
|
759
|
+
|
|
760
|
+
- Aba **Variáveis**: tabela Nome / Valor do ambiente atual, editável na linha (nome sem `{{}}`); arrastar o nome
|
|
761
|
+
para um campo do slide escreve `{{nome}}`. Sem botão Inserir. Segredos só pelo nome; valor com cara de token é mascarado.
|
|
762
|
+
- **Ambientes** (slides de API): modal maior; o YAML é validado a cada digitação (`POST /api/http/ambientes/validar`,
|
|
763
|
+
mesma regra do salvar, inclusive `secrets` e `current`); **Salvar** só habilita com YAML válido e a versão anterior
|
|
764
|
+
fica em `ambientes.yaml.bak` (0600).
|
|
765
|
+
- Texto / Forma / Imagem foram para **Inserir → Objetos livres**, sem o botão "Selecionar objetos" nem instrução
|
|
766
|
+
escrita: clicar num objeto do slide já seleciona. Miniaturas do "Diagrama de texto" com o dobro do tamanho.
|
|
767
|
+
Botão Apresentar e o menu dele com 40 px de altura. Elemento `{ image: "" }` não quebra mais o render.
|
|
768
|
+
- Prévia de tema no hover: a da main (`previewLook`, tema e paleta) ficou; a versão paralela da Frente D saiu
|
|
769
|
+
(a main já testa em `studio-themes.test.js`).
|
|
770
|
+
- Achados no merge, com teste: (1) escolher um ambiente gravava `current:` no arquivo mas a caixa de texto ficava
|
|
771
|
+
com o antigo, e o Salvar seguinte desfazia a escolha; agora o texto acompanha (com edição pendente, só a linha
|
|
772
|
+
`current:` muda). (2) A caixa do aviso "texto pequeno" bloqueava o clique para editar o texto (agora deixa passar).
|
|
773
|
+
(3) Clique simples no texto voltou a escrever (barra de formatação); apertar e arrastar move o objeto; clique em
|
|
774
|
+
forma/imagem seleciona. Sair com Escape religa a edição dos textos.
|
|
775
|
+
|
|
776
|
+
## Guia Avançado e demonstrações visíveis — 28/09/2026
|
|
777
|
+
|
|
778
|
+
- A aba **Avançado** do editor reúne o seletor de densidade do slide, inserção de página de consulta e atalhos
|
|
779
|
+
para grade adaptável, diagrama vivo e tipografia cinética. A seleção compacta o slide atual sem remover texto.
|
|
780
|
+
- A galeria **Exemplos do SagaDeck** também inclui página de consulta, grade adaptável, cápsulas e tipografia
|
|
781
|
+
cinética; são cenas inseridas no deck em edição, não apresentações completas.
|
|
782
|
+
- Biblioteca: **Abrir demos completos** leva ao tópico `Demos e modelos`; incluído `Recursos avançados` em **Modelo pronto**
|
|
783
|
+
para mostrar texto denso, blocos de código, aviso, grade, diagrama e sequência cinética no deck inteiro.
|
|
784
|
+
- Testes verificam seleção/persistência de densidade, inserção de página de consulta e renderização do demo.
|
|
785
|
+
|
|
786
|
+
## Aviso de modelrelay velho sabe da instalação editável — 28/09/2026
|
|
787
|
+
|
|
788
|
+
- Pergunta do Naruminho: no laptop o modelrelay roda do clone; precisa `pip install -U`? Não: com `pip install -e`
|
|
789
|
+
o `git pull` basta (o sagadeck lê `modelrelay.__version__` do próprio código). O aviso mandava `pip install -U`
|
|
790
|
+
para todo mundo; agora `relay_clone()` (`python/sagadeck/llm.py`) vê se o pacote vem de uma pasta com `.git` e
|
|
791
|
+
`pyproject.toml` (fora de site-packages) e manda `git pull` naquela pasta. Teste em `python-relay.test.js`
|
|
792
|
+
(clone falso com `.git`; `.venv` dentro de repositório não conta como clone). README explica.
|
|
793
|
+
|
|
794
|
+
## Frente F: fontes embutidas (sem Google) e modo simples no Studio — 28/09/2026
|
|
795
|
+
|
|
796
|
+
- **Fontes**: o `base.css` importava 6 famílias de `fonts.googleapis.com`. Na rede do banco (proxy barrando o Google)
|
|
797
|
+
o tema perdia a letra, abrir/exportar podia esperar a fonte e cada abertura avisava o Google. Agora as fontes (OFL,
|
|
798
|
+
pacotes `@fontsource` em devDependencies) ficam em `src/runtime/fonts/<família>.css` em base64, só o subconjunto
|
|
799
|
+
latino (`scripts/vendor-fonts.mjs` gera; `index.json` lista). O HTML leva só as famílias que o CSS do deck cita
|
|
800
|
+
(`fontsCSSFor` em `build.js`: um deck do sinal não leva a letra do rabisco); o Studio carrega todas uma vez em
|
|
801
|
+
`/fonts.css`. Licenças no `THIRD_PARTY_NOTICES.md`. Efeito colateral bom: os testes de UI da nuvem pararam de
|
|
802
|
+
falhar por "fonte do Google barrada".
|
|
803
|
+
- **Modo simples** (padrão): as ferramentas de especialista (`[data-adv]` no `index.html`: Abrir YAML, tom e textura,
|
|
804
|
+
API ao vivo, Última fileira/Mapa de atenção, Ritmo, Guias, YAML, Sons) ficam guardadas; "Mais opções" (à direita
|
|
805
|
+
das abas) mostra tudo e o navegador lembra (`simpleMode`). Nada foi removido.
|
|
806
|
+
- Testes: `fonts.test.js` (nenhum tema pede fonte à internet; deck leva só as suas; com a internet cortada o rabisco
|
|
807
|
+
desenha com Caveat; Studio serve `/fonts.css`), `studio.test.js` (modo simples esconde, Mais opções mostra e lembra).
|
|
808
|
+
|
|
809
|
+
## Frente E (preguiçoso): Nova em 3 caminhos, vitrine única, prévia do tema e "Baixar tudo" — 28/09/2026
|
|
810
|
+
|
|
811
|
+
- **Nova (biblioteca)**: o menu tinha 16 entradas. Agora: *Descrever com IA*, *A partir de um arquivo ou link*,
|
|
812
|
+
*Modelo pronto*, e embaixo *Em branco* / *Importar*. `startNew()` em `library.js` é a porta única.
|
|
813
|
+
- **Vitrine "Modelo pronto"** (`galleryDialog`): coleções, estilos prontos (as experiências de
|
|
814
|
+
`src/experiences.js`, que antes não tinham porta: o "Escolher um estilo" abria o seletor de importar), demonstrações
|
|
815
|
+
e exemplos, com filtro. Mesmos `data-new` de antes (`model-*`, `example-*`) e `exp-<id>` para os estilos.
|
|
816
|
+
- **Diálogo de IA da biblioteca** (era só um campo de texto; a Frente A tinha melhorado só o modal do editor): assunto,
|
|
817
|
+
minutos (mostra "≈ N slides", mesma conta de `slidesForMinutes`), estilo (Automático = a IA escolhe o tema pelo
|
|
818
|
+
assunto, ou uma coleção) e material de apoio (arquivos e link, via `/api/ai/context`). "A partir de um arquivo" é o
|
|
819
|
+
mesmo diálogo, que já abre o seletor de arquivo e aceita gerar só com o anexo.
|
|
820
|
+
- **Bug**: "Deck com IA" do editor gravava o deck gerado solto na pasta do deck aberto (ou na pasta atual do servidor),
|
|
821
|
+
fora da biblioteca. Agora editor e biblioteca usam `generateIntoLibrary()` (pasta própria, no tópico do deck aberto;
|
|
822
|
+
falhou, vai para a lixeira). Teste em `storage.test.js` (falhava antes: o deck ia para `/tmp`).
|
|
823
|
+
- **Prévia do tema/paleta ao passar o mouse** (aba Design): o slide aberto aparece com o visual, com o selo
|
|
824
|
+
"Prévia: … Clique para aplicar."; nada é gravado; tirar o mouse volta; o clique aplica (`previewLook`/`endPreview`
|
|
825
|
+
em `app.js`, CSS da prévia numa `<style>` à parte).
|
|
826
|
+
- **Baixar tudo** (Arquivo, primeiro item): um .zip com o PowerPoint (com notas), o PDF e o roteiro
|
|
827
|
+
(`/api/export/tudo`; também na biblioteca por `kind=tudo`).
|
|
828
|
+
- Ícones `link` e `paperclip` incluídos (o chip de link do chat, da Frente B, aparecia sem ícone).
|
|
829
|
+
- Testes: `library-ui.test.js` (3 caminhos, vitrine com filtro, estilo pronto vira deck, IA manda minutos/estilo/anexo,
|
|
830
|
+
"a partir de um arquivo" só com o anexo), `studio-themes.test.js` (prévia sem gravar, clique aplica),
|
|
831
|
+
`studio.test.js` (Baixar tudo: zip com pptx com notas, pdf e roteiro), `storage.test.js` (gerado na biblioteca).
|
|
832
|
+
|
|
833
|
+
Falta da lista: modo simples por padrão (avançado dobrável) e as fontes do Google embutidas (a rede do banco barra
|
|
834
|
+
`fonts.googleapis.com`: temas perdem a letra, abrir/exportar pode esperar, e cada abertura avisa o Google).
|
|
835
|
+
|
|
836
|
+
## Frente D (preguiçoso): trocar o tema muda o arranjo dos slides de conteúdo — 28/09/2026
|
|
837
|
+
|
|
838
|
+
- Antes a pele de cada tema (`src/runtime/skins/<tema>.css`) só rearrumava capa, seção e encerramento; no resto a
|
|
839
|
+
troca era cor e fonte. Agora cada tema tem o seu jeito para título (`.hd`), cartões e KPIs, marcador da lista,
|
|
840
|
+
citação, número grande e frase: barra de aviso e placas (sinal), fios e centralizado (editorial), vazado e
|
|
841
|
+
simétrico (noite), faixas primárias e círculos (bauhaus), prompt e janelinhas (terminal), fios duplos e colunas
|
|
842
|
+
(jornal), balões e sombra suave (oceano), contorno grosso e sombra dura (pop), centralizado sem caixa (prata),
|
|
843
|
+
tracejado e circulado à mão (rabisco), vidro e brilho (aurora). Só CSS (vale no HTML, PDF e PPTX pela coleta),
|
|
844
|
+
zero token, a geometria do YAML não muda.
|
|
845
|
+
- Bug achado no caminho (`src/runtime/fit.js`): elemento escondido (`display:none`, ex.: a aspas que o tema esconde)
|
|
846
|
+
contava como "texto fora da área" e o ajuste encolhia a citação até o mínimo.
|
|
847
|
+
- Mermaid na troca de tema: conferido que é só repintura no navegador (`paint()` com a paleta), sem IA. Nada a fazer.
|
|
848
|
+
- Teste: `themes-skin.test.js` monta 6 slides de conteúdo nos 11 temas e exige ao menos 8 arranjos diferentes por
|
|
849
|
+
tipo (ignorando cor, fonte e raio), nada fora do slide, nada vazando e texto curto sem encolher. REFERENCIA.md
|
|
850
|
+
descreve o que cada tema faz (a IA não reescreve slides só para "combinar").
|
|
851
|
+
- Frentes A, B e C (abaixo) foram feitas por outro agente (opencode); a suíte na `main` foi conferida antes: só as
|
|
852
|
+
falhas de ambiente da nuvem (fontes do Google barradas, nome do download no Chrome headless).
|
|
853
|
+
|
|
854
|
+
Próximas (mesma lista do "preguiçoso"): prévia do tema ao passar o mouse; "Baixar tudo" (PPTX + PDF + roteiro);
|
|
855
|
+
menu Nova com 3 caminhos e vitrine única de modelos; modo simples por padrão (avançado dobrável); estilo escolhido
|
|
856
|
+
pela IA pelo briefing quando a pessoa não escolhe.
|
|
857
|
+
|
|
858
|
+
## Frente C (preguiçoso): elemento aviso: + regras de prompt + auditoria da referência — 28/09/2026
|
|
859
|
+
|
|
860
|
+
- Elemento novo `{ aviso: { tipo, titulo, texto } }` (tipos: importante/atencao/dica/perigo; atalho `{ aviso: "texto" }`
|
|
861
|
+
vira dica; "atenção" com ou sem acento): caixa com ícone e cor do tema em `src/elements.js` + CSS em
|
|
862
|
+
`src/runtime/base.css` (o PPTX/PDF herdam pela coleta do HTML). Formulário ganha o tipo "Aviso" (com
|
|
863
|
+
`f.obj` aninhado) e a ordem de tipos.
|
|
864
|
+
- Prompt (vale para chat e geração): slide denso fecha com 1 takeaway em ==destaque== e usa `aviso` para o que
|
|
865
|
+
não pode passar batido; ==palavras-chave== no texto em vez de negrito em excesso. REFERENCIA.md documenta
|
|
866
|
+
o elemento (vira chave válida) e os materiais da Frente B.
|
|
867
|
+
- Auditoria da preocupação "o chat conhece as ferramentas?": todos os 38 layouts são citados na referência,
|
|
868
|
+
cenas com exemplos, comandos via prompt do deck-ai. Buraco real era só o `aviso:` (agora documentado).
|
|
869
|
+
- Testes: `engine.test.js` (4 tipos, atalho, acento, tipo inválido, markdown e SVG), `studio.test.js` (adiciona
|
|
870
|
+
pelo formulário, salva no YAML, desenha a caixa), `ai.test.js` (regra no prompt do sistema). `npm run bundle` passou.
|
|
871
|
+
- Validação ao vivo (nemotron-3-ultra-550b:free; o 120b e o qwen gratuitos estavam sobrecarregados/limitados):
|
|
872
|
+
"adicione um aviso de perigo…" → `{aviso:{tipo:perigo,…}}` exato no slide.
|
|
873
|
+
- CI acusou 2 falhas no Linux (ambas verdes no Windows): (1) teste do Aviso não achava o campo visível —
|
|
874
|
+
blindado abrindo o cartão do elemento antes de digitar, como a pessoa faria; (2) conversa salva depois do
|
|
875
|
+
indicador sumir (race real: recarregar na mesma hora perdia a troca) — agora a conversa grava antes de
|
|
876
|
+
dispensar o indicador, nos 3 caminhos de resposta.
|
|
877
|
+
|
|
878
|
+
## Frente B (preguiçoso): chat e Nova leem pdf/docx/xlsx/pptx e links — 28/09/2026
|
|
879
|
+
|
|
880
|
+
- Novo `src/ai/context.js`: extração de texto no servidor (txt/md/csv direto; docx/xlsx/pptx via jszip;
|
|
881
|
+
pdf via pdfjs-dist, dependência nova); links com anti-SSRF (sem rede local/metadata, redirects revalidados,
|
|
882
|
+
2 MB, 15 s), HTML virando texto e PDF linkado valendo; bloco MATERIAL ANEXADO rotulado e truncado (12 mil
|
|
883
|
+
caracteres no prompt). O binário nunca vai para o modelo.
|
|
884
|
+
- `POST /api/ai/context` guarda o texto na sessão e devolve id; chat manda ids (imagens continuam embutidas);
|
|
885
|
+
links colados na mensagem são lidos sozinhos (até 2, falha não trava, aparece nas ações); `editDeck` e
|
|
886
|
+
`generateDeck` aceitam `materials`; modal "Deck com IA" tem anexos de arquivo + link.
|
|
887
|
+
- UI: chips de documento no chat e no modal, trava de envio enquanto lê, placeholders e accepts atualizados.
|
|
888
|
+
REFERENCIA.md documenta os materiais (vai no prompt da IA).
|
|
889
|
+
- Testes: `test/context.test.js` novo (extração, SSRF, fetch local, truncamento); `ai.test.js` (bloco no pedido);
|
|
890
|
+
`studio-ai.test.js` (docx anexado chega ao modelo sem o zip; link lido sozinho sem script); `studio.test.js`
|
|
891
|
+
(anexo no modal vai no corpo do pedido). `npm run bundle` passou (3,4 MB).
|
|
892
|
+
- Validação ao vivo (nemotron-3-super-120b:free, só texto): docx com "40 por cento / 3 bilhões" → slide editado
|
|
893
|
+
com os dois números em `==destaque==`. Na primeira tentativa o provedor gratuito devolveu 503 (sobrecarga);
|
|
894
|
+
passou na segunda.
|
|
895
|
+
|
|
896
|
+
## Frente A (preguiçoso): Nova em 1 tela — minutos, estilo e placeholder — 28/09/2026
|
|
897
|
+
|
|
898
|
+
- Modal "Deck com IA" agora pede **minutos** (slides saem daqui: ~1 a cada 1,5 min, `slidesForMinutes()` em
|
|
899
|
+
`src/ai/deck-ai.js`; ajuste fino manual vale até trocar os minutos) e **estilo** (as 5 coleções →
|
|
900
|
+
`COLLECTION_STYLE` em `template-collections.js`: tema + direção criativa; tema explícito continua vencendo).
|
|
901
|
+
- Encanamento: modal manda `duration`+`style`, servidor repassa (`direction` resolvida no `generateDeck`);
|
|
902
|
+
sem minutos/slides, o servidor calcula os slides da duração (vale para o CLI `--duration`, que já existia).
|
|
903
|
+
- Ajuda do CLI menciona `--duration`. Placeholder do briefing com exemplo melhor.
|
|
904
|
+
- Testes: `ai.test.js` (regra, prompt com duration/style, precedência de explícitos), `template-collections.test.js`
|
|
905
|
+
(um estilo por coleção, tema válido), `studio.test.js` (modal: auto, sugestão de tema, corpo do pedido).
|
|
906
|
+
- Validação ao vivo (nemotron-3-super-120b:free, sem imagens): 10 min + estilo essencial → 7 slides variados,
|
|
907
|
+
tema prata, soma dos tempos = 10, em 1,6 min. `npm run bundle` passou.
|
|
908
|
+
|
|
909
|
+
## Rótulos grudados na faixa de opções — 28/09/2026
|
|
910
|
+
|
|
911
|
+
- Reclamação: vários botões do editor com palavras grudadas ("Diagramade texto", "Cabeçalhoe rodapé",
|
|
912
|
+
"Deckcom IA", "Últimafileira", "Mapa deatenção").
|
|
913
|
+
- Causa: os rótulos usavam `<br>` para quebrar em duas linhas, mas o `studio-next.css` escondia o `<br>`
|
|
914
|
+
(`.studio-next .rbtn-lg br { display: none }`, do wip do visual novo) — as palavras colavam numa linha só.
|
|
915
|
+
- Correção: rótulos em linha única com espaço de verdade (`index.html`) e remoção da regra morta do CSS.
|
|
916
|
+
A faixa já rola na horizontal (`overflow-x`), então os botões mais largos não quebram nada.
|
|
917
|
+
- Não eram bug (só innerText de elemento escondido): selo "0" do fiscal (absoluto, some quando limpo),
|
|
918
|
+
"Aa+nome" dos cartões de tema (posicionamento absoluto) e título+descrição do menu Nova (descrição em bloco).
|
|
919
|
+
- Teste: `studio.test.js` abre cada aba (Inserir, Design, IA, Revisar) e confere o texto visível dos botões,
|
|
920
|
+
mais uma guarda contra minúscula seguida de maiúscula nos rótulos da faixa.
|
|
921
|
+
- Validação: `npm test` — 405 testes, 391 passaram, 14 pulados (ao vivo), zero falhas; `npm run bundle` passou.
|
|
922
|
+
|
|
923
|
+
## Coleções visuais — 28/09/2026
|
|
924
|
+
|
|
925
|
+
- Pedido anterior interrompido após revisão e merge por Claude; nova frente limitada aos templates dos cinco
|
|
926
|
+
screenshots e à troca de imagens solicitada durante a execução. Nenhuma palestra pessoal reescrita.
|
|
927
|
+
- Cinco coleções em `src/studio/template-collections.js`: Perspectiva, Essencial, Revista, Cromático e Traços;
|
|
928
|
+
31 slides editáveis, fotografias originais locais, capas, agendas, capítulos, colagens, encerramentos e
|
|
929
|
+
páginas adaptáveis. Menu Nova apresentação; cada cópia recebe seus recursos em `imagens/` na biblioteca.
|
|
930
|
+
- Formatar → imagem: escolher foto própria sem perder geometria; atalho que prepara no chat a geração pelo
|
|
931
|
+
conteúdo do slide; geração por descrição disponível também para substituir uma imagem existente.
|
|
932
|
+
- Testes: criação das cinco coleções pela UI com conferência de YAML/arquivos, substituição da foto com
|
|
933
|
+
preservação da geometria, pedido contextual no chat, renderização de todos os slides sem imagens faltantes,
|
|
934
|
+
formas transparentes por cores inválidas, texto fora do palco ou erros JS. Revisão visual dos 31 slides.
|
|
935
|
+
- Validação concluída: `npm test` — 404 testes, 390 passaram, 14 pulados, zero falhas; `npm run bundle` passou.
|
|
936
|
+
- Reinício local solicitado, mas o comando foi recusado pela revisão automática de permissões
|
|
937
|
+
(`blocked by policy`); não confirmado nesta etapa. O Studio permanece em `http://127.0.0.1:3001`.
|
|
938
|
+
|
|
939
|
+
## Frente: diagramas, one-page e apresentações do dia a dia
|
|
940
|
+
|
|
941
|
+
Pedido original (Naruminho, set/2026), em cinco partes:
|
|
942
|
+
|
|
943
|
+
1. **Diagramas de verdade**: setas (linha, pontilhada, grossa), fluxogramas, UML; menos rígido que os layouts;
|
|
944
|
+
a IA faz 95% e a pessoa só pede ajuste; foto de rascunho no guardanapo vira diagrama bonito.
|
|
945
|
+
2. **One-page** (uma página só com tudo): jornada com ícones e mini-frases, problema com números, solução;
|
|
946
|
+
às vezes um dashboard (números grandes, mapa de região, barras comparativas, linhas de tendência).
|
|
947
|
+
3. **Status semanal**: feito, bloqueios, problemas, avanço, screenshots quando há front-end; muito variável
|
|
948
|
+
(tem semana sem nada "mostrável").
|
|
949
|
+
4. **Governança da Bridge**: pedido de acesso (SharePoint) → experimento (30 dias, prorrogável, dados
|
|
950
|
+
fictícios) ou projeto (DEV 30 dias, HOM 30 dias, PROD sem prazo); em HOM/PROD as chaves do Identity ficam
|
|
951
|
+
no Key Vault, cadastradas via RITM/Change no ServiceNow.
|
|
952
|
+
5. **Caminhos que se abrem conforme o front-end**: lote (Databricks de madrugada, autocontido); front-end
|
|
953
|
+
próprio (Wave → arquitetura → infra → rede/firewall → infra de namespace/ARO → DBA do DER → DBA de
|
|
954
|
+
implantação → sistemas/devs, cada área com seu formulário/artefato: throughput, segurança, cyber,
|
|
955
|
+
sustentação com playbook/runbook, governança com descomissionamento/curadoria/data shift); Teams (curso e
|
|
956
|
+
licença Copilot Studio premium + Power Automate); SaaS externo (túnel mTLS + serviço extra na Bridge).
|
|
957
|
+
Pergunta: como deixar isso navegável, organizado e útil?
|
|
958
|
+
|
|
959
|
+
### 1. Diagramas: FEITO (branch `claude/focused-albattani-vdll01`)
|
|
960
|
+
|
|
961
|
+
- Layout `diagram` com código Mermaid (`mermaid:`), desenhado no navegador por `src/runtime/diagram.js`
|
|
962
|
+
com a fonte e a paleta do slide. Biblioteca embutida (`src/runtime/vendor/mermaid.min.js`, via
|
|
963
|
+
`scripts/vendor-science.mjs`), funciona offline.
|
|
964
|
+
- Ênfase por classe (`:::hi`, `:::em`, `:::escuro`, `:::suave`, `:::vazado`); ícones `:nome:` nos rótulos
|
|
965
|
+
(o espaço do ícone é medido como texto "MM" antes do desenho e trocado depois: o nó não corta o rótulo).
|
|
966
|
+
- `%%{init}%%` é removido (fugiria da paleta).
|
|
967
|
+
- Visual (pedido de Naruminho, com um diagrama de arquitetura estilo draw.io como referência): famílias de cor
|
|
968
|
+
tiradas do tema, uma por grupo (`subgraph`): fundo bem claro, título colorido, nós com preenchimento suave e
|
|
969
|
+
contorno da mesma cor mais escura; setas em ângulo reto (`curve: step`); nada de preto chapado (texto
|
|
970
|
+
grafite, setas cinza); `:::suave` é cinza neutro (externos). Mapa mental: uma família por ramo (o Mermaid
|
|
971
|
+
pinta o ramo N com a cor N+1; contorno e linha acompanham). Pintura por grupo em `paint()` (geometria:
|
|
972
|
+
cada nó pega a família do menor grupo que o contém).
|
|
973
|
+
- Direção automática (pedido de Naruminho: "o gerador tem que decidir a disposição"): o fluxograma é desenhado em
|
|
974
|
+
LR e em TB e fica o que deixa a letra maior (troca só se for 12% melhor); `autoDirection: false` mantém.
|
|
975
|
+
- Conferência pelo desenho: `diagramCheck` (`src/studio/snapshot.js`) desenha no Chrome headless; em
|
|
976
|
+
`src/ai/deck-ai.js`, `checkDrawings` devolve à IA o erro de sintaxe (corrigir) e o "encolheu demais"
|
|
977
|
+
(objeção única, soft). Ligado no chat, no gerar deck (Studio, biblioteca e CLI) e no napkin.
|
|
978
|
+
- Studio: botão Inserir → Diagrama, formulário, miniatura desenhada, aviso na barra de status quando o
|
|
979
|
+
diagrama encolhe ou tem erro (vai junto para a IA em `renderNotes`).
|
|
980
|
+
- PDF/PPTX/foto para a IA esperam `window.SagaDiagramsReady`.
|
|
981
|
+
- Referência para a IA: seção "Diagramas (`diagram`)" em `docs/REFERENCIA.md`, com regras de bom desenho.
|
|
982
|
+
- Testes: `test/diagram.test.js` (paleta, ênfase, ícone, tipos, contraste, aviso), `test/ai.test.js`
|
|
983
|
+
(erro e objeção voltam para a IA), `test/studio.test.js` (inserir pelo Studio).
|
|
984
|
+
|
|
985
|
+
Ideias que ficaram para depois (não bloqueiam):
|
|
986
|
+
- Setas "gordas" geométricas (chevrons de processo) não são do Mermaid: hoje o layout `steps` cobre; avaliar
|
|
987
|
+
um elemento próprio se a pessoa pedir.
|
|
988
|
+
- Editar o diagrama arrastando (tipo draw.io) está fora: a edição é pelo chat/código. Reavaliar com uso real.
|
|
989
|
+
|
|
990
|
+
### Paletas de família: FEITO
|
|
991
|
+
|
|
992
|
+
- Pedido: identidade de marca sem cansar a vista (a cor forte da marca só no detalhe; a página trabalha com os
|
|
993
|
+
parentes mais agradáveis dela). Pré-definidas e **sem nome de empresa** (o software é distribuído livremente):
|
|
994
|
+
`rubi`, `ametista`, `tangerina`, `safira`, `esmeralda` em `src/themes.js`.
|
|
995
|
+
- Campo `family` (2 a 8 parentes) em qualquer paleta: vira `--c-f1..` e as séries 3 a 5 dos gráficos
|
|
996
|
+
(`familySeriesCSS`); nos diagramas, grupos e ramos usam os parentes (`familyOf`/`visible` em
|
|
997
|
+
`src/runtime/diagram.js`: parente claro demais escurece mantendo o matiz; faltando parentes, variações pequenas
|
|
998
|
+
de matiz/luminosidade, nunca o arco-íris). A ênfase (`alert`) nunca vira grupo nem ramo.
|
|
999
|
+
- Testes: `engine.test.js` (variáveis e séries), `diagram.test.js` (tudo na família, ênfase na cor forte).
|
|
1000
|
+
|
|
1001
|
+
### Infográficos: FEITO
|
|
1002
|
+
|
|
1003
|
+
- Pedido (com 5 prints de templates): formas que o Mermaid não faz, com quantidade variável de itens e ajuste
|
|
1004
|
+
automático. Layout `infographic` (`src/infographic.js`), `shape`: `arco`, `ramos`, `lados`, `trilhas`, `metro`.
|
|
1005
|
+
- Palco de 1680×700: geometria em SVG, textos em HTML por cima (editáveis no PowerPoint). Caixa com `data-fit` e
|
|
1006
|
+
tamanhos internos em `em` (encolhem juntos); alinhamento `safe` (o excesso vai para baixo, onde a medida vê).
|
|
1007
|
+
- Cores `itemColors`: família da paleta ou tons harmônicos ao destaque, sempre com contraste 3 para letra clara.
|
|
1008
|
+
- Sombra e ponta de seta com id por slide (hash do conteúdo): com id repetido, o navegador usava a definição do
|
|
1009
|
+
1º slide, invisível quando outro está na tela.
|
|
1010
|
+
- Testes: `engine.test.js` (formas, limites, cores), `infographic.test.js` (nada encavala, texto cabe, dentro do
|
|
1011
|
+
palco, setas do próprio slide; rode com `IG_THEME=rabisco` para a fonte larga), `studio.test.js` (inserir,
|
|
1012
|
+
trocar forma, adicionar item).
|
|
1013
|
+
|
|
1014
|
+
### Fila combinada (próximas etapas, nesta ordem)
|
|
1015
|
+
|
|
1016
|
+
1. ~~PowerPoint sem as notas do apresentador~~ FEITO: menu Arquivo e cartão da biblioteca ("Baixar PowerPoint sem as notas", `?notas=0`), CLI `--sem-notas`, `exportPptx({ notes: false })`. As notas continuam no deck.
|
|
1017
|
+
2. ~~Identidade~~ FEITO (`src/identity.js`, `applyIdentity` em `src/themes.js`, grupo Identidade na aba Design, rotas `/api/identities`; paleta `oceano` renomeada para `safira` por colidir com o tema `oceano`). Desenho original: arquivo local `~/.sagadeck/identidades.yaml` (fica na máquina do
|
|
1018
|
+
trabalho, nunca no repositório), com fontes por papel (título, corpo, compacta) em ordem de preferência e a
|
|
1019
|
+
paleta preferida. Opcional e por deck (`identidade: nome`; Studio: Design → Identidade). Corpo e rótulos sempre
|
|
1020
|
+
na fonte da empresa; títulos grandes só nos temas sóbrios (os de personalidade mantêm a fonte do tema).
|
|
1021
|
+
Fallback: fontes digitadas → fonte do tema → genérica; aviso no Studio se nenhuma estiver instalada. Sem
|
|
1022
|
+
embutir o arquivo da fonte (licença). Fontes mais largas (rabisco/sketch): o ajuste de texto já remede quando a
|
|
1023
|
+
fonte chega; o diagrama agora espera `document.fonts.ready`.
|
|
1024
|
+
Correção depois: o grupo Identidade ficou alto e as 16 paletas espremeram a galeria de temas até sumir (a faixa
|
|
1025
|
+
rolava na vertical). Agora temas e paletas dividem o espaço, cada um com a sua rolagem (`.rgroup-gallery`), e o
|
|
1026
|
+
teste "Design: temas e paletas ficam à vista" confere em 1366 e 2000 px.
|
|
1027
|
+
3. One-page, status semanal, governança navegável (abaixo): FEITOS.
|
|
1028
|
+
|
|
1029
|
+
Decisão pendente com Naruminho: manter MIT ou trocar para AGPL-3.0 (proteção contra uso fechado como serviço).
|
|
1030
|
+
Versões já publicadas como MIT continuam MIT.
|
|
1031
|
+
|
|
1032
|
+
### Revisão da branch do GPT (`gpt-adaptativo`) e comandos da IA
|
|
1033
|
+
|
|
1034
|
+
- Aproveitado: correção do prompt (dizia que diagrama não é layout); aba JavaScript nos slides api (reescrita
|
|
1035
|
+
legível, no molde do Python; testada executando contra uma API de mentira); grades adaptáveis `mosaic`
|
|
1036
|
+
("Grade adaptável"; "Mosaico" já era o bento), `ribbon`, `dossier` (`src/adaptive-layouts.js`; regra do item
|
|
1037
|
+
em destaque corrigida para a grade fechar sem buraco); modelos de demonstração (`src/studio/demo-decks.js`,
|
|
1038
|
+
capa comprimida de 1,9 MB para 144 KB; menu Nova agora cabe em janela baixa, com rolagem); regras do
|
|
1039
|
+
AGENTS.md. Galeria do Studio: teste novo falha se um layout do motor ficar fora dela (pegou também o
|
|
1040
|
+
`decisionlab`, que estava escondido).
|
|
1041
|
+
- Descartado: `scripts/restore-humano-bug.mjs` (alterava o conteúdo de uma palestra da pessoa, com caminhos da
|
|
1042
|
+
máquina dela), `scripts/wire-adaptive.mjs` (editava o código-fonte por substituição de texto) e
|
|
1043
|
+
`scripts/verify-demo-decks.mjs` (caminhos fixos da máquina).
|
|
1044
|
+
- Comandos da IA, redesenhados (`src/ai/commands.js`): a IA pede `run: {language, why, code}`; o Studio mostra
|
|
1045
|
+
o código e só roda com o clique (Executar / Executar e liberar os próximos / Não executar). Pedido pelo fluxo
|
|
1046
|
+
NDJSON (`phase: "approve"`), resposta em `/api/ai/approve`, presa ao usuário que pediu; 10 min sem resposta =
|
|
1047
|
+
recusado. Variáveis/segredos/token do ambiente como `SAGA_VAR_*`/`SAGA_SECRET_*`/`SAGA_TOKEN`, saída
|
|
1048
|
+
mascarada. Local: liberado para a pessoa da máquina. Multiusuário: só `--agentes` / `SAGADECK_AGENTES`
|
|
1049
|
+
(pedido de Naruminho: no servidor Oracle, a Mary usa tudo menos comandos).
|
|
1050
|
+
|
|
1051
|
+
### 2. One-page: FEITO
|
|
1052
|
+
|
|
1053
|
+
- Layout `onepage`: jornada (etapas com ícone e mini-frase), o problema (texto, números grandes, tópicos), a solução
|
|
1054
|
+
e o painel (`dashboard: {numbers, figures}`): números grandes em cima; gráficos (os mesmos de `chart`, com `title`)
|
|
1055
|
+
e mapa por UF embaixo. Só aparece o que foi preenchido (bloco `{}` vazio some); sem painel, letra maior e conteúdo
|
|
1056
|
+
no meio; problema/solução + painel lado a lado; só o painel = dashboard de página inteira. Gráficos desenhados na
|
|
1057
|
+
proporção do quadro (1,5x e reduzidos, a letra acompanha). Limite de palavras próprio: 120 (status: 90).
|
|
1058
|
+
- Elemento novo `ufmap` (`src/figures/ufmap.js`): mapa do Brasil em grade (cartograma, sem geodados de fora), cor
|
|
1059
|
+
pela escala do `--em` do tema, UF sem valor apagada, `highlight`, legenda; em quadro estreito só as siglas. No
|
|
1060
|
+
mapa do one-page ganha coluna própria da altura do painel. Serve em qualquer lugar (`figure`, `side`…).
|
|
1061
|
+
- Studio: galeria (One-page), formulário (jornada, O problema/A solução com números e tópicos, Painel com números
|
|
1062
|
+
grandes e "Gráficos e mapa" como elementos); elemento "Mapa por UF" no seletor de elementos. `f.obj` com
|
|
1063
|
+
`stringAs` converte o atalho em texto (`problem: "…"`) em `{text}` sem perder o conteúdo.
|
|
1064
|
+
- Testes: `onepage.test.js` (motor, mapa, e no navegador cheio/só painel/simples sem nada fora, vazando do quadro
|
|
1065
|
+
ou encavalado em sinal, editorial e noite; gráfico não espremido), `studio.test.js` (criar pela galeria, problema
|
|
1066
|
+
e número do painel no deck salvo). Exportação PPTX/PDF conferida à mão.
|
|
1067
|
+
|
|
1068
|
+
### 3. Status semanal: FEITO
|
|
1069
|
+
|
|
1070
|
+
- Layout `status`: saúde (`health` ok/risco/atrasado, com `healthLabel` para trocar o texto), avanço (`progress` %),
|
|
1071
|
+
destaque (`highlight`) e as seções feito, em andamento, bloqueios, riscos e problemas, próximos passos; item é texto
|
|
1072
|
+
ou `{text, owner, due}` ("Ana · até 30/09"); `shots` (até 3 telas com legenda) ao lado.
|
|
1073
|
+
- "Muito variável": só aparece o que foi preenchido. Grade de 6 trilhas: a última linha incompleta se reparte inteira
|
|
1074
|
+
(5 seções = 3 + 2, sem buraco); semana magra (até 6 itens, sem telas) ganha letra maior e o bloco no meio.
|
|
1075
|
+
- Studio: galeria (Status semanal) e formulário (saúde, avanço, listas com responsável e prazo, telas).
|
|
1076
|
+
- Testes: `status.test.js` (motor; no navegador, semana cheia e vazia sem nada fora do slide ou encavalado em
|
|
1077
|
+
sinal, editorial e noite), `studio.test.js` (criar pela galeria, saúde, avanço e bloqueio no deck salvo).
|
|
1078
|
+
|
|
1079
|
+
### 4 e 5. Governança navegável: FEITO o recurso (navegação por caminhos)
|
|
1080
|
+
|
|
1081
|
+
- Pergunta do Naruminho: "como deixar isso navegável, organizado e útil?" (acesso → experimento ou projeto → DEV/HOM/
|
|
1082
|
+
PROD; caminhos que se abrem conforme o front-end). Resposta: um **mapa** e seções por caminho, em vez de sequência.
|
|
1083
|
+
- Layout `hub` (mapa de caminhos: pergunta + opções com ícone, texto, detalhe e seta). `goto` (id ou número) em opção,
|
|
1084
|
+
cartão, item de lista e etapa deixa o item clicável; `[texto](#id)` no meio do texto; no slide, `id`, `back`
|
|
1085
|
+
(botão "Voltar: <título do destino>" no canto; no terminal fica na barra da janela, no noite dentro da moldura) e
|
|
1086
|
+
`next` (o fim do caminho volta ao mapa em vez de seguir a ordem). `navWarnings` avisa destino inexistente e id repetido.
|
|
1087
|
+
- Funciona na apresentação (runtime: clique; `next` no fim do slide), no PDF (áreas clicáveis por cima das fotos das
|
|
1088
|
+
páginas, links internos) e no PowerPoint (`hyperlink: { slide }`, "hlinksldjump").
|
|
1089
|
+
- Studio: galeria (Mapa de caminhos), formulário do hub, "Ao clicar, ir para" em cartão/etapa/item e, em Mais
|
|
1090
|
+
opções de todo slide, "Id do slide", "Botão Voltar para" e "No fim, avançar para". REFERENCIA: seção "Navegação por
|
|
1091
|
+
caminhos" com exemplo (a IA sabe montar).
|
|
1092
|
+
- Testes: `navigation.test.js` (motor, cliques na apresentação, links no PDF e no PPTX), `studio.test.js` (mapa pelo
|
|
1093
|
+
formulário, destino e id no deck salvo).
|
|
1094
|
+
- O deck da governança em si (conteúdo do trabalho) não entra no repositório: vai para a biblioteca da pessoa.
|
|
1095
|
+
|
|
1096
|
+
---
|
|
1097
|
+
|
|
1098
|
+
## Como rodar os testes numa sessão na nuvem
|
|
1099
|
+
|
|
1100
|
+
`npm ci`, depois `SAGADECK_BROWSER=/opt/pw-browsers/chromium-1194/chrome-linux/chrome npm test`
|
|
1101
|
+
(sem essa variável, os testes de navegador são pulados em silêncio).
|
|
1102
|
+
- Correção adicional motivada pelo print: calc com oito resultados passa a usar grade adaptativa, preservando curvas e controles; reprodução automatizada e conferência no deck real passaram. Relatório de geração extraído para módulo próprio, mantendo o limite de tamanho do Studio.
|
|
1103
|
+
- Validação final da avaliação de narrativas: 705 testes, 685 passaram, 20 pulados, zero falhas. Bundle atualizado e servidor local reiniciado na 3517.
|
|
1104
|
+
|
|
1105
|
+
### Aulas técnicas — primeira etapa validada (03/10/2026)
|
|
1106
|
+
- Rolagem até a linha ativa do codewalk e revisão visual do estado real do palco corrigidas. Suíte: 707 testes, 687 aprovados, 20 pulados, zero falhas; bundle atualizado.
|
|
1107
|
+
- Próxima etapa solicitada: eliminar piscada no traço, ampliar exploração de grafos e experimentos de programação, integrar imagens e capturas reais da pesquisa. As aulas servem para avaliar recursos gerais, preservando conteúdo existente.
|
|
1108
|
+
|
|
1109
|
+
### Laboratórios interativos — implementação e validação em curso
|
|
1110
|
+
- Causa da piscada reproduzida: a entrada do quadro completo reiniciava em cada passo. Removida apenas no algo, preservando destaque de escritas/comparações.
|
|
1111
|
+
- Recursos gerais graphlab e codelab implementados, catalogados, formulários de Studio e referência da IA atualizados. Rede com cartões semânticos, menor custo, BFS, vizinhança, zoom/pan, foco, arraste, edição de custos e nós e restauração. Código usa o interpretador offline existente e aceita alteração de programa/entrada, sem prometer pacotes Python externos.
|
|
1112
|
+
- Pesquisa conserva URLs de imagens observadas; importador de imagens reais e captura pública com navegador, arquivos locais, proveniência e erros explícitos. Não desenhar interfaces fictícias no lugar de screenshots.
|
|
1113
|
+
- Material de estudo HTML incorpora experiências. Teste revelou history/wake lock inválidos no iframe sandbox; corrigido com isolamento mantido. 65 testes de motor/laboratórios aprovados, zero falhas; 29 regressões de pesquisa/exploração passaram na rodada anterior.
|
|
1114
|
+
- Chat nativo aplicando novos recursos à aula de grafos, com URLs reais da documentação Neo4j e galeria NetworkX. Nenhuma edição do YAML por script próprio.
|
|
1115
|
+
|
|
1116
|
+
## Próxima etapa autorizada — execução, coleções e mídia
|
|
1117
|
+
- [x] Python nativo e JavaScript nativo, com saída real e erros visíveis.
|
|
1118
|
+
- [x] Coleções de APIs: importar/adicionar, selecionar serviço, editar pedido e executar; avaliar expansão para PDF/PPTX.
|
|
1119
|
+
- [x] Player do YouTube e importação opcional de vídeo MP4 para a biblioteca.
|
|
1120
|
+
- [x] Quadro isolado de HTML/CSS/JavaScript para animações personalizadas geradas pelo agente.
|
|
1121
|
+
- [x] Validar código e interações reais, documentar limites, publicar e reiniciar na porta 3517.
|
|
1122
|
+
|
|
1123
|
+
- Laboratórios validados: suíte completa com 716 testes, 696 aprovados, 20 pulados e zero falhas. Formulários extraídos para lab-fields.js; teste de conteúdo longo preserva identificadores e programas, sem duplicar nós. Regressões específicas: 26 aprovadas.
|
|
1124
|
+
- Aula de grafos ampliada pelo chat, preservando os slides anteriores: dois grafos exploráveis e telas reais oficiais de Neo4j Browser e galeria NetworkX, importadas localmente com proveniência.
|
|
1125
|
+
|
|
1126
|
+
### Execução e mídia — integração em curso
|
|
1127
|
+
- Etapa anterior publicada e mergeada no PR #119 (a234dbb).
|
|
1128
|
+
- Implementados codelab Python/Node nativos, coleções Postman/seletor e expansão estática no Studio, playground HTML/CSS/JS isolado e player YouTube/MP4 local. Formulários dedicados e permissões do chat reutilizadas.
|
|
1129
|
+
- Download real validado com vídeo da documentação YouTube: MP4 de 57.498.089 bytes, áudio e vídeo reunidos via FFmpeg. Ferramentas instaladas em AppData/SagaDeck, checksum yt-dlp validado. Testes de navegador/Studio em andamento.
|
|
1130
|
+
|
|
1131
|
+
- Novo caso do usuário: divulgação do hackathon AI Apps. Usuário esclareceu que é somente brainstorm, sem gerar apresentação. Dados de agenda/regulamento ainda inexistentes; autorizou exemplos fictícios claramente identificados. Não criar deck de hackathon nesta etapa.
|
|
1132
|
+
- Oito testes novos de execução nativa, coleções/importação no Studio, exportação por serviço, frame isolado e MP4 real passaram. Nova rodada completa pendente.
|
|
1133
|
+
|
|
1134
|
+
### Cena cinematográfica reutilizável — 03/10/2026
|
|
1135
|
+
- Usuário autorizou prosseguir com portal, transformação do cenário e tipografia integrada. Implementação genérica portal com catálogo ilustrativo, imagem própria por elemento, objetos persistentes antes/depois, movimento reduzido e demo cinematica; não criar a apresentação completa do hackathon.
|
|
1136
|
+
- Próximos passos: validar interação/formulário salvo e aspectos, revisar visualmente, suíte completa, publicar e reiniciar na 3517.
|
|
1137
|
+
|
|
1138
|
+
### Reuniões com decisões e divulgação — implementação em curso
|
|
1139
|
+
- Novo pedido autoriza gerar a apresentação do evento e avaliar/corrigir a saída; substitui a restrição anterior de somente brainstorm. Conteúdo e planejamento pessoal ficam fora do repositório.
|
|
1140
|
+
- Enquete manual ampliada: contagens e abstenções salvas, aprovação explícita, empate bloqueado, reabertura e versão para participantes sem pendências internas. Valores aprovados atualizam calculadoras para simular consequências; exportação respeita o mesmo filtro.
|
|
1141
|
+
- Revisão visual real encontrou fonte inconsistente nos controles e convite cortado na cenografia. Corrigidos no motor; teste cenográfico falhou antes e passou depois. Votação, persistência, vinculação numérica e PPTX público passaram nos testes específicos.
|
|
1142
|
+
- Suíte completa anterior: 726 testes, 705 passaram, 20 pulados, uma falha no tamanho de ícone do portal; correção confirmada pelos testes específicos. Nova suíte em execução, publicação ainda pendente.
|
|
1143
|
+
|
|
1144
|
+
### Validação final da etapa
|
|
1145
|
+
- Suíte completa: 729 testes, 709 passaram, 20 pulados, zero falhas (918,6 s). Correções finais de publicação/legibilidade verificadas novamente em testes específicos; anotações internas não entram na versão pública.
|
|
1146
|
+
- Revisão de apresentação real: 22 slides percorridos, sem texto ou controles fora da área útil, portal e experiência personalizados conferidos no navegador. Documento e evidências somente na biblioteca pessoal.
|
|
1147
|
+
- Recursos genéricos prontos: execução Python/Node, coleções, vídeo, frame isolado, portais e decisões persistentes; falta somente concluir publicação da etapa no GitHub.
|
|
1148
|
+
|
|
1149
|
+
- Entrega publicada e mergeada: PR #120 (https://github.com/naruminho/sagadeck/pull/120), merge 1fb5a6f. Bundle atualizado, serviço local reiniciado na 3517. HTML de divulgação verificado sem controles de votação ou notas internas. CI remoto em andamento no momento do merge; suíte local e regressões finais aprovadas conforme acima.
|
|
1150
|
+
|
|
1151
|
+
### Transições A/B capa→próximo (saida × morph) — em curso na feat/light-portal-direction
|
|
1152
|
+
- Pedido do Naru para o hackathon: comparar duas transições high-tech entre slides — A) capa sai / próximo entra, B) morph que se transforma no próximo — com a IA do sagadeck refazendo só pelo que vê no `ref`.
|
|
1153
|
+
- Implementado: `transition: saida` (anterior recua com escala 1.06 e dissolve em 450ms, próximo sobe 48px em 600ms) e `transition: morph` (crossfade 850ms com respiro de escala + FLIP de `continuity:` já existente) em `src/runtime/base.css` + gancho no `goto()` em `src/runtime/runtime.js` (sem movimento em `instant`, exportação ou preferência reduzida). Documentado em `docs/REFERENCIA.md`; formulário do Studio trocou a lista fantasma (`slide/zoom/none`, que nunca existiram) pelas reais (`fade/cut/saida/morph`).
|
|
1154
|
+
- Testes: `data-tr` emitido (`engine.test.js`) + classes de saída aplicadas/removidas e zero erros JS (`runtime.test.js`, navegação por teclado como a pessoa usa — o `goto` exposto é sempre `instant`). Suítes afetadas verdes: engine 59/59, runtime 34/34.
|
|
1155
|
+
- Publicado: commit 80da025 na feat/light-portal-direction (só os arquivos desta etapa; o trabalho anterior da branch continua no disco).
|
|
1156
|
+
- Paleta `luzquente` (etapa 2, mesmo branch): brancos quentes + âmbar com família, para futurista de bom gosto sem neon barato; no `tone: dark` vira HUD âmbar sobre carvão quente. Doc no `ref`; engine 61/61.
|
|
1157
|
+
- Eco `ambient: pontos|grade` (etapa 2): camada viva discreta atrás do conteúdo (poeira de luz à deriva / grade em perspectiva), com `data-ambient`, aviso em valor inválido, campo no formulário e testes de motor + navegador.
|
|
1158
|
+
- Figura `{ points: forma }` e morph `{ points: { de: fone, para: mic } }` (etapa 2): `src/figures/points.js` rasteriza 6 formas (`fone`, `mic`, `doc`, `planilha`, `busca`, `chat`) em luzinhas SVG ordenadas por ângulo; `src/runtime/points.js` viaja cada ponto no clique/Enter com legenda que troca; parado com movimento reduzido; PPTX/PDF usam a inicial. Testes de motor + navegador verdes; runtime 38/38.
|
|
1159
|
+
- Falta nesta frente: aplicar no deck do hackathon (com o Naru conferindo), `npm run bundle` + suíte completa antes de publicar.
|
|
1160
|
+
- IA preparada para gerar o cinema sozinha (etapa 3): nova direção criativa "Cinema hacker de bom gosto" (`src/ai/variety.js`) + seção "Direção cinematográfica" no `ref` mapeando "Tony Stark/hacker/futurista" para noite+luzquente+ambient+morph+points e as regras de gosto. Prompt verificado: Tony Stark, luzquente, points, morph e a regra anti-neon presentes no `reference()`. Teste novo: toda direção indica tema existente. Engine 62/62.
|
|
1161
|
+
- Areia fina como a foto (etapa 4): pontos vazados em passo 0.25 com opacidade variada e joias, brilho sutil, legenda embaixo; slide do deck com fundo preto puro e legendas de serviço (`SPEECH TO TEXT` → `RESUMO COM AÇÕES`). Visto em screenshot: mic de contorno dourado no preto, morph para o balão, zero erros.
|
|
1162
|
+
- Suporte a vídeo (etapa 5, sem gastar): `{ video: cena.mp4, loop: true, poster }` repete sozinho sem controles; `tools/generate-video.mjs` envia/polla/baixa via OpenRouter (`--dry-run` valida no catálogo de graça — passou). Roteiro dos 3 clipes em `docs/PLANO-VIDEO-CINEMA.md`. Aguardando liberação: 1 clipe curtinho de teste, depois o brief do filme da areia.
|
|
1163
|
+
- Prova com vídeo real (etapa 6, sem gastar): capa Stark demo (noite+luzquente+ambient) e trailer do Sintel (52 s, 6,4 MB) baixado do YouTube, embutido em loop e visto em screenshots — player com loop/autoplay/muted e readyState 4, zero erros e zero avisos de build. Achados: yt-dlp exige runtime JS (o sagadeck já passa o node) e sem ffmpeg a junção falhava — `downloadYoutube` agora cai para arquivo único; testes cobrem os dois ramos.
|
|
1164
|
+
|
|
1165
|
+
### Preparação de vídeo pelo chat e direção por conteúdo — 03/10/2026
|
|
1166
|
+
- Usuário rejeitou a aparência de portal/contornos 2D como substituta do filme 3D. Geração paga condicionada a briefing e aprovação; nenhum vídeo gerado nesta etapa.
|
|
1167
|
+
- Ferramenta nativa de comando `language: video`: operações curtas plan/submit/status/download, jobs persistidos na pasta do deck, catálogo validado, MP4 local reaproveitado. Corrigidos argumentos separados do CLI e URL relativa de polling (sem prefixo duplicado). Testes simulam API, custo zero no planejamento e download sem token no CDN.
|
|
1168
|
+
- Instruções ao agente agora selecionam formatos por função narrativa, revisam repetição visual e preservam a paleta solicitada. Distinguem SVG 2D, transição CSS e filme volumétrico; não prometem 3D quando só há pontos ou crossfade.
|
|
1169
|
+
- Poster de vídeo local incorporado no HTML; loop retoma ao voltar ao slide. Regressão reproduzida antes e passou após correção. Portal claro/transição contínua da frente anterior preservados para outros usos, sem insistir nesse recurso para a direção rejeitada.
|
|
1170
|
+
- Roteiro pessoal da etapa anterior removido do repositório e preservado na biblioteca. Briefing novo fica somente na pasta pessoal. Suíte completa e publicação pendentes.
|
|
1171
|
+
- Controle de palco incluído: início manual sem autoplay, avanço por clique ou pelo frame/fim do vídeo, revelação da composição por baixo sem recriar título, fade sincronizado ao mediaTime. Formulário do Studio salva início/final; testes verificam título persistente, ausência de timer e geometria/continuidade do vídeo (antes, el descartava x/y/w/h).
|
|
1172
|
+
- Primeira suíte completa: 750 testes, 727 passaram, 20 pulados, 3 falhas diagnosticadas (descoberta local de FFmpeg interferia no teste sem FFmpeg; quebra CRLF no exemplo da documentação; formato da dica de tema). As três regressões passaram após correção. Nova rodada completa necessária com os controles de palco finais.
|
|
1173
|
+
- Validação final: 754 testes, 734 passaram, 20 pulados e nenhuma falha. Bundle atualizado. Controles de abertura manual, revelação sincronizada e ferramenta de vídeo prontos para publicação.
|
|
1174
|
+
|
|
1175
|
+
### Abertura de palco e pesquisa sem espera indefinida — 03/10/2026
|
|
1176
|
+
- `controls: stage`: início e avanço por clique ou teclado, sem controles visíveis para a audiência. O primeiro comando inicia; outro permite pular. O próximo slide pode ser a capa final nativa. Campo exposto no formulário e documentado para o agente.
|
|
1177
|
+
- Regressão reproduzida antes da correção: controles denunciavam a abertura e Espaço avançava em vez de iniciar. Teste de navegador agora verifica espera, ausência de controles, início, avanço e zero erros. Formulário salva o modo no deck.
|
|
1178
|
+
- Pesquisa: “Anotando…” era uma chamada ao LLM, com respostas de até 12 mil tokens e tentativas longas. Anotação agora curta, sem raciocínio adicional, com prazo total de 45s compartilhado pelas tentativas; ao esgotar avisa e continua. Teste com provedor lento falhou antes e passa após a correção, sem chamada repetida.
|
|
1179
|
+
- Geração: quantidade e formato explicitamente pedidos prevalecem sobre estimativa de duração; slide único não recebe capas/encerramentos/referências extras. Teste confere o prompt e resultado de um slide, sem heurística de palavras no código.
|
|
1180
|
+
- Testes focados passaram. Suíte completa em execução; dados pessoais, frames e vídeos permanecem somente na biblioteca.
|
|
1181
|
+
- Validação concluída: suíte completa com 757 testes, 737 passaram, 20 pulados e zero falhas. Bundle atualizado; abertura de palco e pesquisa com prazo prontas para publicação.
|
|
1182
|
+
|
|
1183
|
+
### Movimento declarativo e prova pelo agente — 03/10/2026
|
|
1184
|
+
- Usuário exige geração pelo próprio chat, não apresentação artesanal como prova. Prévia pessoal aprovada preservada; teste real será feito em estudo separado.
|
|
1185
|
+
- Plano: (1) elementos nativos wireframe/requests/flow/chat, (2) início manual e handoff para vídeo, (3) referência e instruções do agente, (4) criação/revisão pelo chat real com evidências, (5) regressões + bundle + suíte completa + publicação.
|
|
1186
|
+
- Implementados `motion` e runtime de controle: geometria 3D projetada, fluxo, requests fictícios sem reiniciar loop, chat determinístico com entrada/envio/pensando/resposta/leitura. Frames isolados sem rede; pausa fora do slide e movimento reduzido.
|
|
1187
|
+
- Teste de elemento falhou antes da implementação e passa; teste de navegador valida entrada antes do balão, fase de pensamento e avanço. Handoff para vídeo e prova real ainda em validação. Nenhuma nova geração paga de vídeo autorizada nesta etapa.
|
|
1188
|
+
|
|
1189
|
+
- Prova real concluída pelo endpoint do próprio chat (modelo real, sem edição externa do YAML): criou abertura, capa e conteúdo nativos; revisão pelo mesmo chat corrigiu contraste e escala do detalhe. Navegador confirmou espera manual, digitação antes do balão, pensamento, avanço automático e zero erros. Evidências e estudos ficam na biblioteca pessoal. Handoff chat → vídeo existente passou em teste de navegador, sem nova geração paga.
|
|
1190
|
+
- Segundo caso real pelo chat: slide de logística com motion flow, sem referência ao hackathon ou à Bridge; elemento criado pelo modelo. Nenhuma regra de código depende do tema de apresentação.
|
|
1191
|
+
- Validação final: suíte completa existente com 757 testes (737 passaram, 20 pulados, zero falhas), mais três testes novos de motion executados separadamente e verdes. Testes antigos de movimento preservados. Bundle atualizado; pronto para publicação.
|
|
1192
|
+
- Preferência confirmada pelo usuário: composição nativa/editável é o padrão sem precisar pedir; conferir saída antes de sugerir experiência personalizada ou mídia paga. Mídia paga não é proibida; benefício, briefing, custo e autorização existente guiam a alternativa. Diretriz adicionada no início da referência do agente.
|
|
1193
|
+
|
|
1194
|
+
### Chat cancelável, apresentações por aba e transferência de slides — 03/10/2026
|
|
1195
|
+
- Reproduzidos: entrada bloqueada durante IA e abertura de outra apresentação redirecionando contexto global. Contextos agora separados por usuário + aba; tarefa captura arquivo de origem, faz junção com arquivo atual e não aplica resultado cancelado.
|
|
1196
|
+
- Entrada permanece disponível para preparar mensagem; enviar vira Parar (ícone quadrado), volta ao terminar. Cancelamento chega ao modelo, revisão, transformação e subprocessos; fechar aba corta o chat.
|
|
1197
|
+
- Copiar/Colar na faixa Início e Ctrl+C/Ctrl+V na lista: slide vai para outra apresentação com novos identificadores e arquivos locais copiados sem colidir; somente mídias referenciadas, não pastas inteiras ou credenciais. Clipboard do Studio separado por usuário.
|
|
1198
|
+
- Testes regressivos falharam antes e passaram após a correção: cancelamento de chamada pendente, isolamento entre apresentações, cópia entre abas com imagem gravada no destino. Suíte completa e publicação pendentes.
|
|
1199
|
+
- Validação concluída: npm test com 764 testes, 744 aprovados, 20 pulados e zero falhas. Isolamento por cabeçalho de aba preserva endpoints e autenticação; transformações sobrevivem ao recarregamento, cancelamento explícito continua disponível.
|
|
1200
|
+
|
|
1201
|
+
### Documentos como fonte e direção contextual — 03/10/2026
|
|
1202
|
+
- PDF/Word anexados são persistidos na pasta da apresentação com inventário visual. Word recupera imagens, tabelas e OMML; PDF recorta elementos via visão e preserva a página inteira com aviso quando a identificação falha. Inventário acompanha pedidos futuros no chat.
|
|
1203
|
+
- Anexos são fonte exclusiva por padrão; pesquisa exige autorização explícita reconhecida pelo modelo. Documentos não fornecem instruções. Seleção, tom, densidade e estilo dependem de conteúdo, público e objetivo; pedido explícito prevalece. Humor permite fontes informais como opinião.
|
|
1204
|
+
- Compartilhamento: reproduzida corrupção do Mermaid pela inserção do botão de download dentro de uma string `</body>` do fornecedor. Inserção agora ocorre somente no fechamento real do HTML; regressão de compilação JavaScript passou após falhar antes.
|
|
1205
|
+
- Modelos do Oracle alinhados ao Windows, incluindo configuração de vídeo Veo 3.1 Lite; planejamento validado sem submissão paga. PR #125 publicado e serviço local reiniciado na 3517.
|
|
1206
|
+
- Limites: gráficos Word sem cache ou de tipos não suportados ficam sinalizados; recortes PDF exigem revisão quando o modelo não enxerga. Aplicação visual completa de template PPTX não implementada nesta etapa.
|
|
1207
|
+
- Testes focados aprovados: inventário Word/PDF, fallback, seleção editorial, anexo no chat com imagem gravada no slide e reutilização na próxima mensagem, pesquisa exclusiva/complementação. Suíte completa em validação.
|
|
1208
|
+
|
|
1209
|
+
- Teste real de paper encontrou respostas de visão truncadas antes do inventário. Visão agora usa orçamento por página configurável, sem raciocínio nessa tarefa, coordenadas explícitas e limites de texto do PDF para proteger rótulos e legendas. Inventário incompleto pode ser refeito; texto do material inventariado não perde conclusões no antigo corte de 12 mil caracteres.
|
|
1210
|
+
- Barra flutuante acompanha reflow/movimento da seleção, deixando o texto livre. Regressão reproduziu a barra sobre o objeto e testou o segundo clique para digitar.
|
|
1211
|
+
- Diagnóstico geral: motivo de término preservado em JSON e streaming; tokens, timeout, créditos, acesso, conexão e arquivos distinguíveis. Código e referência para suporte, causa desconhecida explícita, sem resposta bruta/credenciais no aviso. Cancelamento permanece uma ação normal. Testes específicos aprovados; nova suíte completa em andamento.
|
|
1212
|
+
- Busca web real testada com sucesso após desligar raciocínio na resposta estruturada do buscador. Pesquisa somente leitura continua disponível para usuários sem execução local; teste de permissão atualizado para esse contrato, mantendo isolamento e bloqueio de comandos locais.
|
|
1213
|
+
|
|
1214
|
+
Atualização 04/10: screenshots revelaram hierarquia invertida e evidências tratadas como fotografias. Split agora prioriza figura informativa, empilha figuras largas e mantém contain; orientação do agente exige reconstrução de equações/tabelas legíveis sem duplicar original. CHAPTER 4.doc convertido com Word: 19 páginas, 151 objetos OLE de fórmulas, sem OMML. Teste real pelo upload em andamento usando inventário da renderização. Falhas transitórias do LLM têm retry limitado e cancelável; diagnósticos preservam mensagens específicas de APIs e conflitos de aba. Validação final e merge pendentes.
|
|
1215
|
+
|
|
1216
|
+
### Validação integral pelo chat — 04/10/2026
|
|
1217
|
+
- Foco confirmado pelo usuário: o agente deve criar abertura com piada, capa tecnológica animada e conteúdo com pequenos movimentos coerentes, somente por instruções no chat. Decks continuam sendo validadores descartáveis, não solução personalizada escrita por fora.
|
|
1218
|
+
- Nova geração nativa iniciada com sequência completa e briefing consolidado; vídeo pago não será submetido antes de apresentar o prompt detalhado exigido anteriormente.
|
|
1219
|
+
- Regressões de movimento verificadas: chat digita no campo antes de enviar, pensa, responde e inicia vídeo manual; requests continuam variando; zero erros de navegador. Isso prova o runtime, não a qualidade da composição gerada.
|
|
1220
|
+
|
|
1221
|
+
- Prova integral encontrou AI_TOKEN_LIMIT antes de produzir o deck. Implementada recuperação em src/ai/staged-generation.js: planejamento conciso compartilhado, grupos de três slides e rejeição de etapas incompletas. Nenhum roteiro de evento foi hardcodado. Testes focados passaram; nova prova nativa em andamento após bundle/restart3517. Ainda não concluído nem mergeado.
|
|
1222
|
+
- Revisor recebe recursos de movimento/vídeo dos demais slides, além de títulos, para avaliar coerência da sequência. Pesquisa instruída a não substituir eventos/plataformas internos por homônimos públicos.
|
|
1223
|
+
|
|
1224
|
+
- A revisão da prova tentou remover movimentos obrigatórios para corrigir colisões. Reparo agora deve reposicionar/redimensionar recursos explicitamente pedidos, não eliminá-los. Acrescentado motionAccent: região reservada para detalhe nativo pequeno nos layouts seguros; teste real de navegador verifica conteúdo, movimento e rodapé separados.
|
|
1225
|
+
- Primeira prova completa após reinício gerou 17 slides, mas revisão terminou com 8 achados e faltavam movimentos em vários slides. Não aprovada. Nova prova precisa validar melhorias e conferir visualmente, depois planejar filme via chat.
|
|
1226
|
+
|
|
1227
|
+
- A capa criada pelo agente tinha código estático. Recurso genérico motion/terminal implementado: digita roteiro de lines/code, cursor, pausa de leitura, pausa fora do slide; documentação disponível ao agente. Teste no navegador passou.
|
|
1228
|
+
- Suíte completa: 787 testes, 766 passaram, 20 pulados, uma falha por CRLF no exemplo Mermaid da referência. Normalizado LF; teste de regressão passou. Nova suíte completa necessária após as alterações mais recentes.
|
|
1229
|
+
|
|
1230
|
+
- Prova nativa pelo chat executou video/frame e video/plan: captura real do slide em 1920px e consulta ao catálogo Veo, sem submit/custo. Ferramenta frame agora permite ao agente preparar suas próprias referências sem scripts externos. Frames e plano permanecem na biblioteca pessoal.
|
|
1231
|
+
- Movimento reduzido/exportação comunicam modo poster às cenas isoladas; terminal mostra roteiro completo para não confundir digitação inicial com texto cortado na revisão.
|
|
1232
|
+
- Nova prova criada em branco pelas APIs nativas e conduzida por /api/ai/chat com referência visual da capa anteriormente aprovada. Avaliação visual e filme final continuam pendentes; não declarar experiência completa.
|
|
1233
|
+
|
|
1234
|
+
- A referência aprovada é somente um caso de validação: o usuário reforçou que o chat precisa criar direções variadas, sem receita de capa específica no motor. Prova integral pelo chat gerou 18 slides; inspeção real encontrou título cortado, logo provisório, iframe ambiente maior que seu contêiner e votação com controles sobre a última opção. Ainda não aprovada.
|
|
1235
|
+
- Regressões reproduzidas e corrigidas: reparo automático agora preserva ferramentas e contexto; iframe ocupa integralmente a região reservada; votação distribui linhas sem sobrepor controles. Testes específicos falharam antes e passaram depois. Direção genérica de vídeo distingue poster/espera manual, texto existente versus letras novas, loop ambiente versus abertura e camadas chat/vídeo.
|
|
1236
|
+
- Studio reiniciado na 3517; refinamento solicitado pelo próprio chat com busca de logo real e preservação de recursos. Nenhum vídeo pago submetido nesta etapa. Suíte completa e avaliação final pendentes.
|
|
1237
|
+
|
|
1238
|
+
- Suíte completa anterior aprovada: 794 testes, 774 passaram, 20 condicionais pulados. Corrigidas depois as falhas reais de camadas/controles/ferramentas, com regressões específicas; nova suíte em curso.
|
|
1239
|
+
- Referências web agora incluem links observados aos arquivos de imagem originais, além de thumbnails. SVG autocontido é rasterizado em PNG transparente, sem conteúdo ativo/rede externa; testes de proporção, validação e importação aprovados.
|
|
1240
|
+
- Refinamento nativo falhou por limite de tokens após ferramentas, sem gravar o deck. Chat agora faz uma recuperação limitada, sem raciocínio, mantendo resultados e execução única; orçamento configurável. Regressão reproduziu a falha e passou com a correção, incluindo limite da segunda tentativa. Streaming/progresso continuam depois dos comandos. Nova prova real chegou à revisão das capas.
|
|
1241
|
+
|
|
1242
|
+
- Direção transversal implementada no agente, revisão e geradores de imagem/vídeo. Plano de vídeo mostra o prompt completo sem cobrança. Testes focados: 6 passaram; avaliação estética real continua necessária.
|
|
1243
|
+
|
|
1244
|
+
- Prova nativa de direção holográfica encontrou cores hex de seis dígitos convertidas em números pelo YAML: reprodução falhou com c.replace; corrigido em elementos, gráficos e motion, teste numeric-colors passou. A criação continua pelo chat, sem edição manual da apresentação.
|
|
1245
|
+
|
|
1246
|
+
- Teste nativo encontrou SVG ocultado por tipo anterior após merge: guard devolve renderizadores incompatíveis e pede null ao trocar figura. Outro achado: review:true no slide era ignorado sem flag no topo; agora solicita revisão dos alterados, com opt-out explícito preservado. Ambos reproduzidos antes da correção.
|
|
1247
|
+
|
|
1248
|
+
- Chat de vídeo sem burocracia (Rose): plan/status/frame/download rodam sem aprovação, só submit pede; IA resume em frase e só mostra tudo em erro. Achado crítico no caminho: code YAML sem aspas virava objeto e commandRequest destruía em "[object Object]" — preservado para video/web. Teste de chat de verdade no navegador (status livre + submit negado).
|
|
1249
|
+
|
|
1250
|
+
### Consolidação 04/10 (Rose): pendências antigas que os merges resolveram- Resolvidas pelos PRs #120–#127: rodadas/suítes "pendentes" das seções de execução e mídia, cena cinematográfica, reuniões com decisões, validação final, abertura de palco, motion declarativo, chat cancelável e documentos como fonte (inclui CHAPTER 4 e staged-generation via #126).
|
|
1251
|
+
- Seguem ABERTAS de verdade: aprovação da capa (bloqueia vídeo e resto, gerações pausadas pelo Narumi), avaliação estética final da direção holográfica, liberação de budget dos clipes (teste + filme da areia) e a decisão MIT vs AGPL-3.0.
|
|
1252
|
+
|
|
1253
|
+
### Autonomia total (Rose): o agente vigia, a pessoa não
|
|
1254
|
+
- Carimbo do motor na barra de status (versão + commit + início) via /api/instance; aprovação de submit mostra preço do catálogo; direções aprovadas salvas e injetadas no prompt; vigia baixa clipe pronto sozinho e avisa com toast; versões fotografadas a cada save com modal lado a lado e restaurar com rede.
|
|
1255
|
+
- Caça própria: YAML inexistente no cliente quebrava o init em silêncio (botões mortos); show do servidor agora manda slides prontos. Módulos extraídos para respeitar a trava de 100KB do server.js.
|