As decisões correntes mais recentes permanecem em
sdd/decisions/DECISION-LOG.md. Este arquivo guarda o histórico movido para manter o log corrente enxuto (≤10 itens).
DEC-031 - 2026-06-05 - accepted
Registro de Alvo de IA, Variáveis Globais e Modos de IA para o Módulo de Galerias (req-019 / BATCH-019). Decisões desta rodada:
-
Registro do Alvo
galleries: Adicionarai_prompts_targetseai_modesemgalleries.jsonpara que a rotinaatualizacao-dados-recursos.phpcompile e registre o alvogalleriesnos arquivosAlvosIaData.jsoneModosIaData.jsonem ambos os idiomas (pt-breen). -
Criação de Prompts/Modos de IA: Criar os arquivos de prompt/modo em markdown para o alvo
galleries(galleries.mdempt-breen) contendo as regras de estruturação (repetição de items via<!-- item < -->, controle condicional de setas/pontinhos, repetição dedot-iteme atributosdata-*do contêiner). -
Mapeamento de Variáveis Globais vs Itens: No html-editor, unificar a aba de variáveis. A função
galleries_variaveis_template()emgalleries.phpretornará tanto variáveis de item quanto variáveis globais de controle (comoshow_arrows,show_dots,autoplay,autoplay_speed,loop), estas últimas marcadas com'global' => true. -
Tratamento no HTML Editor e Ajax IA: No
html-editor.php, se a variável possuir'global' => true, o mapeamento do template gerará o placeholder[[VAR_ID]](sem o prefixoitem#). No AJAX de IA (html_editor_ajax_ia_requests), processarmenusegalleriesinjetando a lista de variáveis correspondentes na substituição do marcador{{variables}}no prompt do Modo de IA.
DEC-032 - 2026-06-08 - accepted
Integração de Compilação Tailwind CSS CLI para o Core do Sistema e Pipeline de Release (req-020 / BATCH-020). Decisões desta rodada:
-
Pasta de Compilação do Core: Definir a pasta
gestor/assets/tailwindcss/para abrigar a estrutura do compilador Tailwind CSS v4 para o core/manager. O arquivo de entrada seráinput.csscontendo a diretiva@import "tailwindcss";e a diretiva@config "../../../tailwind.config.js";, e o output compilado será gerado emoutput.cssvia npx. -
Integração em Ambientes Locais: Atualizar os scripts de sincronização de desenvolvimento
synchronize-manager.sh(sincronização do manager com Docker local) esync-core-to-project.sh(sincronização do core com projetos de testes) para ler a variável de configuraçãodevEnvironment.tailwindcss/clido arquivoenvironment.json. Caso configurada, os scripts deverão executar o compilador na pasta de origem do core antes de realizar a transmissão (rsync), tratando erros de compilação. -
Pipeline de Release: Modificar o workflow de release
release-gestor.ymldo GitHub Actions para configurar o Node.js v20 e rodar o compilador do Tailwind CSS CLI antes de gerar o pacote ZIP, garantindo que ooutput.cssseja incluído no commit de release e no pacote compactado distribuído.
DEC-033 - 2026-06-08 - accepted
Adoção de Estrutura de Testes Unitários e E2E centralizada na raiz do repositório (req-022 / BATCH-022). Decisões desta rodada:
-
Pasta de Testes Centralizada: Criar a pasta
tests/na raiz do repositório (conn2flow/tests/), separando as suítes de teste emUnit/(algoritmos PHP/JS puros e isolados),Integration/(fluxos que requerem banco ou Docker) eE2E/(fluxos de navegação e interface real). A pasta será excluída dos pacotes de release ZIP do gestor. -
Frameworks e Configuração: Adotar o PHPUnit para testes backend em PHP (com arquivo
bootstrap.phppara carregar dependências do core ephpunit.xml), o Vitest para testes rápidos de JS frontend, e o Playwright para testes funcionais E2E simulando as interfaces CRUD e visualizadores em navegadores headless. -
Atalhos no Workspace: Registrar tarefas de automação no arquivo
.vscode/tasks.jsonpara facilitar a execução rápida de cada suíte de testes por parte de operadores humanos e agentes autônomos.
DEC-034 - 2026-06-08 - accepted
Correção HTML, Automação de Campos e Lançamento v2.8.0 (req-021 / BATCH-021). Decisões desta rodada:
-
Inicialização do Quill em publisher-pages: No carregamento do formulário de edição do publicador páginas, inicializar o input hidden do campo HTML com o valor corrente do Quill editor para garantir o envio correto dos dados mesmo se o usuário salvar sem editar o texto.
-
Botão de Automação de Campos em publisher: Incluir o botão "Adicionar todos os campos" que insere em lote as variáveis do template que não foram associadas ainda. O nome amigável do campo é derivado via remoção de underlines e capitalização de cada termo.
-
Preenchimento Automático de Prompts: Ao adicionar um campo associado ao template, pré-preencher o seletor correspondente. Se o campo adicionado for dinâmico e não possuir mapeamento de prompt legado, gerar o marcador
[[publisher#tipo#id]]como fallback padrão no input prompt.
DEC-035 - 2026-06-09 - accepted
Unificação do Pré-visualizador de HTML Externo nos Módulos (req-022 / BATCH-022). Decisões desta rodada:
-
Unificação do Visualizador: Substituir a geração de iframe/srcdoc duplicada e hardcoded no sucesso do AJAX
opcao: 'widget-preview'nos arquivos de Javascript de destaques (publisher-highlights.js), menus (menus.js) e galerias (galleries.js). -
Biblioteca de Editor HTML: Consumir a nova função de biblioteca unificada
window.previewExternalHtmlConteudo({ htmlDoUsuario, cssDoUsuario, framework })exposta globalmente porhtml-editor-interface.js. -
Mapeamento de Parâmetros:
-
htmlDoUsuario: Conteúdo retornado pela resposta AJAX (dados.html). -
cssDoUsuario: CSS personalizado do editor, obtido a partir da chamada parawindow.html_editor_get_css()(passado via variávelcsslocal do escopo). -
framework: Identificar qual framework CSS está ativo por meio da variável globalgestor.html_editor.framework_css. -
Garantia de Contingência: Implementar fallback seguro mantendo a estrutura CDN do TailwindCSS hardcoded antiga se
window.previewExternalHtmlConteudonão for detectada no escopo.
-
DEC-036 - 2026-06-09 - accepted
Otimização do CSS Automático com Filtragem de Redundâncias do Tailwind (req-023 / BATCH-023). Decisões desta rodada:
-
Remoção de Redundâncias: Filtrar o CSS compilado dinamicamente gerado pelo Tailwind CDN no editor antes de ser inserido no campo
CodeMirrorCssCompilede gravado no banco de dados. -
API Nativa do Navegador: Usar a API
document.styleSheetsno JavaScript do painel administrativo para ler os seletores textuais dosystem-output.css(eoutput.css) carregado no iframe do previewer e armazená-los em umSetde controle. -
Extração e PURGE Dinâmicos: Acessar as regras de estilo de
tailwindStyleElement.sheet.cssRules. Filtrar as regras mantendo apenas os seletores que não existem noSetde seletores globais. Para media queries (@media), filtrar individualmente as suas sub-regras. -
Compatibilidade v3/v4: A extração via
sheet.cssRulesgarante suporte tanto ao Tailwind v3 (que injeta estilos no DOM) quanto ao Tailwind v4 (que insere regras dinamicamente viainsertRule).
DEC-037 - 2026-06-10 - accepted
Links Individuais, Controles de Exibição de Galerias e Correções Visuais (req-024 / BATCH-024). Decisões desta rodada:
-
Estrutura de Links: Cada item de imagem em
selected_itemsno módulogalleriessuportará metadados de link:link_type(nenhum,pagina,link-custom,link-css-classes,publicador),link_page_id,link_url,link_target,link_css_classes,link_publisher_id,link_order_by. A serialização é feita na curadoria do painel e salva nofields_schema. -
Resolução de Links no Widget: Em
galleries.widget.php, carregar slugs de páginas e buscar publicações de forma consolidada e eficiente, retornandolink-url,link-targetelink-css-classespor item. Imagens sem link resolvem parajavascript:void(0);. -
Parâmetros Dinâmicos de Altura/Margem: Inclusão de
height(default 300) emargin_lateral(default 0) nos controles globais de exibição de galeria. Injetá-los dinamicamente nas tags raiz/imagem dos templates. -
Correções de Layout: Ajuste fino de padding/margem nos submenus recursivos de
menus-horizontal-navbar, legenda dogalleries-masonrye tags horizontais coladas nopublisher-highlights.js.
DEC-038 - 2026-06-10 - accepted
Autocomplete de Páginas em Galerias, Ajuste de Menu e Preparação de Release (req-025 / BATCH-025). Decisões desta rodada:
-
Buscador de Páginas Isolado: Substituir o dropdown estático de páginas nas galerias pelo buscador AJAX autocomplete multilíngue clonado do Menus. Para evitar colisões em múltiplas linhas de curadoria simultâneas, os inputs e elementos de sugestões do autocomplete serão identificados utilizando o ID do item curado (ex:
manual_search_type_${it.id}). -
Exclusão de Link Visual: Configurar a classe
pointer-events-none cursor-defaultnos links do widget se o tipo de link for'nenhum', impedindo a interatividade e a indicação de ponteiro de link (hand cursor). -
Alinhamento do Submenu: Ajustar o estilo CSS do submenu navbar horizontal para
display: flex !important; justify-content: space-between; align-items: center;para manter a setinha do submenu alinhada horizontalmente no mesmo bloco. -
Miniaturas Ampliadas: Ampliar a proporção de exibição da imagem curada no painel administrativo de
64x48pxpara200x140pxpara melhor visualização. -
Workflow de Release: Atualizar a data oficial da versão
2.8.0para2026-06-10nos changelogs e incluir o descritivo de otimização de CSS (BATCH-023) e novas correções de links/layouts (BATCH-024/025) no workflow.github/workflows/release-gestor.yml.
DEC-039 - 2026-06-10 - accepted
Ajuste do Modo de IA de Destaques e Preservação de Template Modificado (req-026 / BATCH-026). Decisões desta rodada:
-
Modo de IA de Destaques e Galerias: Atualização dos prompts do modo de IA de destaques (
publisher-highlights.mdempt-breen) para incluir regras claras de uso do bloco condicional opcional<!-- no-item < -->e variáveis adicionais, e de galerias (galleries.mdempt-breen) para incluir as variáveis de link individual ([[item#link-url]],[[item#link-target]],[[item#link-css-classes]]) e a regra obrigatória de envelopar cada imagem curada em uma tag de âncora<a>. -
Identificador Suffix do Dropdown de Modelos: No dropdown de seleção de modelo (
template_id), se o registro atual em edição ou clonagem possuir código HTML ou CSS customizado no banco de dados, gerar e selecionar uma opção sufixada[template_id]-modificado(ex:menus-horizontal-navbar-modificado), com o rótulo[Nome do Modelo] - (Modificado). -
Preservação de Código Customizado: No carregamento inicial das telas de edição/clonagem, se o modelo selecionado for a versão
-modificado, o script JavaScript do módulo correspondente (menus.js,galleries.js,publisher-highlights.js) não disparará a chamada AJAX de carregamento de modelo padrão (loadTemplate()), mantendo intacto o HTML/CSS carregado do banco. -
Alternância entre Modelo Padrão e Modificado e Extração de Variáveis: O JavaScript armazenará em cache o HTML/CSS inicial recuperado do DOM no carregamento. Caso o usuário mude a seleção para a versão limpa do modelo, o template original será carregado via AJAX (
loadTemplate). Se retornar para a versão-modificado, o HTML/CSS original em cache do registro será restaurado no editor. Empublisher-highlights.js, ao carregar/re-selecionar a variante-modificado, as variáveis[[item#X]]serão extraídas localmente do HTML do banco via expressão regular no cliente para manter o painel de mapeamento de variáveis populado. -
Consistência do Banco de Dados: Antes do envio do formulário (submit) ou serialização (
fields_schema), o sufixo-modificadoserá removido de qualquer referência atemplate_idno JavaScript para garantir que o identificador de modelo gravado no banco de dados permaneça limpo e compatível com as consultas existentes. -
Resolução de Framework CSS do Template: Para evitar que o pré-visualizador (
live widget-preview) falhe ao abrir um modelo-modificadodevido à falta da variável de estilo global, o PHP selecionará oframework_cssdos templates e o disponibilizará no dropdown como um atributo de dadosdata-frameworknos elementos<option>. O JavaScript lerá este atributo no page load e em eventoschangepara inicializar a variávelgestor.html_editor.framework_cssde forma síncrona.
DEC-040 - 2026-06-10 - accepted
Resolução de Framework CSS e Variáveis de Destaques de Modelo Modificado (req-027 / BATCH-027). Decisões corretivas desta rodada:
-
Atributo
data-frameworknos Três Módulos: Injetar síncronamente oframework_css(ex:tailwindcss) a partir da tabela de templates em todos os<option>(incluindo a opção-modificadogerada) de templates no PHP paramenus.php,galleries.phpepublisher-highlights.php. -
Sincronização de Runtime no JS: No
readye no listenerchangedo dropdown#template_iddos arquivosmenus.js,galleries.jsepublisher-highlights.js, ler odata-frameworkda opção ativa e atualizar a variável globalgestor.html_editor.framework_css. -
Extração Client-side no Highlights: Implementar a rotina
extractVariablesFromHtmlnopublisher-highlights.jsque processa o HTML com regex/\[\[item#([a-zA-Z0-9_\-]+)\]\]/gno ready e na re-seleção da opção-modificado, populandoavailableItemVarse disparandorenderItemVars()/syncEditorVariables()síncronamente no cliente.