-
Status: implemented-pending-homologation
-
Intake:
sdd/human-requests/req-111.md -
Data de abertura: 2026-08-26
-
Classificação: implementação incremental / Live Editor / widgets / entrega HTML
Objetivo
Preservar comentários, marcadores e formatação do HTML quando a Dashboard Site Toolbar estiver ativa, sem alterar a higienização das páginas públicas, e tornar selecionáveis widgets vazios ou diretamente associados à raiz editável do layout.
Slice aprovado
-
Fazer
gestor_pagina_higienizar_ativo()retornarfalseantes de avaliarHTML_SANITIZEquandogestor_dashboard_toolbar_ativo()existir e estiver ativo. -
Cobrir o gate em produção com e sem Live Editor, preservando os contratos atuais de
auto|on|off. -
Em
mapTree(), mapear no contêiner pai um widget delimitado corretamente cuja expansão esteja vazia, com os mesmos atributos usados no modo-pai existente. -
Permitir o modo-pai no próprio
#c2f-layout-rootquando ele for a raiz editável. -
Fazer
reconstructOriginal()considerar a própria raiz clonada ao reconstruir widgets, evitando que atributosdata-c2f-*vazem para o HTML salvo. -
Cobrir em Vitest o widget vazio, o widget na raiz do layout e o round-trip de reconstrução.
Fora do escopo
-
Alterar o algoritmo de higienização de HTML, CSS ou JavaScript criado no BATCH-134.
-
Desligar a higienização para usuários autenticados sem a Dashboard Site Toolbar efetivamente ativa.
-
Alterar renderizadores de widgets, o endpoint AJAX do editor ou o formato dos marcadores.
-
Sincronizar recursos, fazer deploy, commit ou push.
Contrato de validação
-
php -llimpo nos arquivos PHP alterados. -
node --checklimpo emdashboard.toolbar.js. -
HtmlSanitizeTestcobre produção com Live Editor ativo e inativo. -
dashboard.toolbar.test.jscobre widget vazio e widget mapeado no#c2f-layout-root, incluindo save. -
Suítes PHPUnit e Vitest aplicáveis aprovadas.
-
git diff --checklimpo.
Evidências
-
php -l: 2/2 arquivos limpos (gestor.phpda biblioteca e teste PHP). -
node --check: 2/2 arquivos limpos (dashboard.toolbar.jse teste JS). -
Teste PHP focado: 37/37, 59 asserções.
-
Teste JS focado: 31/31.
-
Suíte PHPUnit completa: 776/776, 3.326 asserções, 4 skips e 1 depreciação preexistente.
-
Suíte Vitest completa: 345/345 em 22 arquivos.
-
Runtime Photon local em produção (
HTML_SANITIZE=auto):-
visitante anônimo: 85.164 bytes, 0 comentários, 0 marcadores de widget, 0 linhas indentadas e nenhuma toolbar;
-
administrador: 115.520 bytes, 22 comentários, 647 linhas indentadas, toolbar,
#c2f-layout-roote#c2f-page-contentpresentes; -
pages-index-search/: 2 marcadores de widget preservados na resposta autenticada.
-
-
Playwright headless em
pages-index-search/: Editbar em modo de edição, widgetpages-indexanotado comdata-c2f-widget-id/data-c2f-widget-root, zero erros de console e screenshot emtemp/req-111-live-editor.png. -
git diff --check: limpo; review findings-first sem findings. -
O sync canônico foi executado pelo Git Bash porque o wrapper WSL não encontrou
/bin/bash; o projeto foi restaurado e confirmado emDEVELOPMENT_ENV=falseantes da inspeção final. -
Nível 1 respeitado: nenhum commit, push ou deploy remoto executado.