Conn2Flow
Navegação das docs

SDD

req-160: O CSS pré-compilado dos templates inseridos não chega ao runtime público

A classe .border-b-2 é usada pelo template sessao-com-abas-alternativo, inserido na página:

  • 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) e conn2flow-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 /

  1. 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 somem

O 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_precompiled no componente do editor (resources/<lang>/components/html-editor/), preenchido pelo html-editor.php e mantido em sincronia com window.htmlEditorCssPrecompiled por html-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

  1. Página que recebe um template renderiza idêntica nos três ambientes depois de salva e publicada, não apenas antes.

  2. Zero utilities aplicadas sem regra na página publicada (hoje: 8).

  3. 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.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada