-
Status do intake: ready-for-intake
-
Data: 2026-09-02
-
Origem: relato do operador após a homologação do BATCH-158. Os dois editores ficaram idênticos, mas a página publicada divergia. A página usada como evidência é descartável — a origem do defeito está nos repositórios de semente:
conn2flow/gestor(core) econn2flow-site/gestor(projeto). -
Classificação: pipeline de CSS derivado, persistência de recurso, paridade editor/runtime
-
Batch candidato: BATCH-161
1. Fato medido
A classe .border-b-2 é usada pelo template sessao-com-abas-alternativo, inserido na página:
| Camada | .border-b-2 |
|---|---|
Sidecar do template — CORE gestor/resources/pt-br/templates/sessao-com-abas-alternativo/ |
existe |
Sidecar do layout — PROJETO conn2flow-site/gestor/resources/pt-br/layouts/layout-conn2flow-site/ |
não existe |
paginas.css_compiled gravado (banco) |
não existe |
A regra existe na origem e some no runtime. Medido na página publicada: 8 utilities aplicadas sem
regra alguma — -z-10, bg-gradient-to-t, border-b-2, list-none, ml-auto, rotate-3,
translate-x-1/2, via-transparent. Todas presentes nos sidecars dos templates inseridos.
Cobertura medida: página publicada 424 classes aplicadas / 13 sem regra; iframe de preview 405 /
-
As 8 de diferença são exatamente as fornecidas por sidecar de template.
2. Causa
O editor filtra a captura contra um baseline que o runtime nunca recebe.
1. modeloSelecionar() soma o sidecar do template ao baseline do editor
window.htmlEditorCssPrecompiled = baseline + sidecar (visual OK)
2. Tailwind Browser compila as classes do template
3. HtmlEditorCssCapture.extract descarta o que "já está no baseline" — inclusive o sidecar
4. save grava css_compiled SEM as regras do template;
css_precompiled da página NUNCA é enviado pelo cliente
5. runtime público monta layout.css_precompiled + css_compiled
o sidecar do template não está em nenhum dos dois -> regras somemO elo que falta está explícito no código: admin-paginas.php lê css_precompiled do banco apenas
para exibir o formulário (linha 613) e regrava o mesmo valor (665). O cliente mantém o baseline
acumulado em window.htmlEditorCssPrecompiled, mas ele não faz parte do POST — não existe campo
para ele. O baseline morre no navegador.
Consequência: toda página que recebe um template perde as regras exclusivas dele. Não é um caso particular de conteúdo; é o mecanismo de inserção.
3. Escopo requerido
Módulo 1 — Persistir o baseline acumulado
-
Campo para
css_precompiledno componente do editor (resources/<lang>/components/html-editor/), preenchido pelohtml-editor.phpe mantido em sincronia comwindow.htmlEditorCssPrecompiledporhtml-editor-interface.js.
Módulo 2 — Gravar nos módulos que persistem recurso
Levantamento dos 12 consumidores de html_editor_componente(). Gravam recurso com CSS derivado e
portanto entram no escopo:
| Módulo | Alvo |
|---|---|
admin-paginas |
paginas |
admin-componentes |
componentes |
admin-templates |
templates |
publisher-pages |
paginas |
admin-layouts |
layouts — ver ressalva |
Fora do escopo (usam o editor para conteúdo de widget, não gravam CSS derivado próprio):
publisher-index, publisher-highlights, galleries, forms, forms-search, pages-index,
menus.
Ressalva sobre admin-layouts: html_editor_css_precompiled_baseline() devolve o próprio
css_precompiled quando alvo === 'layouts' — para o layout, ele já É a base, e não há camada
acima. Precisa ser verificado se a inserção de template num layout reproduz o mesmo furo antes de
aplicar a mesma correção ali.
Módulo 3 — Coerência da captura
Com o baseline persistido, o filtro de HtmlEditorCssCapture volta a ser honesto: passa a filtrar
contra um baseline que existe no runtime. Verificar que não se cria duplicação entre
css_precompiled e css_compiled.
Módulo 4 — Guarda automatizada
Teste que exercita o CICLO, não o estado: inserir seção → salvar → verificar que as regras do sidecar sobrevivem à publicação. O BATCH-158 mediu 15/15 e 18/18 comparando os ambientes com conteúdo já estabilizado, e por isso não pegou este defeito — ele nasce na transição.
4. Critérios de aceite
-
Página que recebe um template renderiza idêntica nos três ambientes depois de salva e publicada, não apenas antes.
-
Zero utilities aplicadas sem regra na página publicada (hoje: 8).
-
Suítes PHPUnit e Vitest verdes.
5. Ambiente de teste
Autorizado pelo operador: o tenant conn2flow-site no Lab HestiaCP ([REDACTED], [REDACTED]) pode
ser usado livremente, inclusive quebrado — tudo que está lá tem cópia nos repositórios de semente.