Remove as duas camadas do kill switch (KB-PLUGIN-013) para distribuição
direta a contas estratégicas, fora do catálogo Mindplace:
- plugin_butterfly_load_license() removida;
- plugin_init_butterfly() inicializa sempre, sem checar licença;
- plugin_butterfly_check_config() retorna true incondicionalmente.
Versão marcada como 2.3.1-vip para o suporte identificar o build.
Único arquivo divergente do main é o setup.php — correções de produto
devem ser feitas no main e trazidas com `git merge main`.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
O editor era criado dentro de uma div com d-none: com display:none o
Monaco mede 0x0 e nasce sem área editável, enquanto o textarea ficava
oculto e disabled — resultado, campo impossível de editar.
- container passa a ser exibido ANTES do create (dimensões reais),
mais layout() explícito e automaticLayout para relayout no resize;
- _force_default_lang evita o caminho de clonagem de linguagem do core
(que quebra se a linguagem base não estiver registrada);
- textarea deixa de ser disabled: fica só oculto, com o valor do editor
copiado nos eventos submit E formdata (form.submit() programático não
dispara submit; formdata cobre os dois casos) — sem risco de perder a
edição silenciosamente no POST;
- se o create falhar, rollback para o textarea comum.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Release: 4 temas novos (aurora-glass, nordic-minimal split-screen,
sunset-mesh borderless, carbon-neon terminal), variáveis de cor próprias
por tema, remoção dos 10 temas legados (~6MB → 128KB), fix do
ValueConverter (cores hex injetadas como cor, não string) e fix do
seletor de body do login (welcome-anonymous).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Aba em Configuração > Geral agora usa createTabEntry com ícone
ti ti-butterfly (Tabler v3.34 do core).
- Kill switch de licença nas duas camadas do padrão KB-PLUGIN-013:
check_config impede ativação sem licença Mindtek válida e
plugin_init aborta silenciosamente (mesmo padrão do plugin redmine).
- Gotcha operacional: mudar PLUGIN_BUTTERFLY_VERSION desativa o plugin
até rodar glpi:plugin:install de novo (checkPluginState).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
isPluginItemType() valida o itemtype com regex que não aceita '\' inicial;
registerClass('\GlpiPlugin\Butterfly\Config') retornava false silenciosamente
e a tab Butterfly nunca era registrada em Configuração > Geral. Usar ::class
(que nunca tem barra inicial) resolve e casa com o glpi_tab do config_page.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Classes migradas de inc/*.class.php (PluginButterfly*) para src/ com
namespace GlpiPlugin\Butterfly (PSR-4 registrado pelo core; KB-033).
Referências de core qualificadas (\Config, \Html, \Session, ...).
- Editor de CSS custom agora usa o Monaco do core (GLPI.Monaco.createEditor
+ sync via formdata, mesmo padrão de custom_ui do core) com fallback
para textarea se a lib não carregar.
- pics/ movido para public/pics: no GLPI 11 só recursos em public/ são
servidos estaticamente em /plugins/<key>/... (RequestRouterTrait).
URLs do select2 de temas agora usam root_doc + encodeURIComponent.
- MIN_GLPI_VERSION 11.0.0; removido bloco morto de GLPI <9.5 e
css/login.base.css órfão.
- config_page com glpi_tab urlencoded para a classe namespaced.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- front/*.php não incluem mais ../../../inc/includes.php: no GLPI 11 o
LegacyFileLoadController boota o core antes do script, e o include
quebra quando o plugin roda do marketplace dir (KB-PLUGIN-028/010).
- logo.png (512x512) criado a partir de plugin.png: o LogoController só
reconhece o nome fixo logo.png (KB-INFRA-002).
- Removidos front/test_simple.php e front/login.css.php (deprecated),
incluindo a firewall strategy correspondente no setup.php (KB-018).
- json_encode com JSON_HEX_TAG|JSON_HEX_AMP em todo dado dinâmico
embutido em <script> (KB-PLUGIN-003).
- .gitignore padrão KB-018; .DS_Store removidos.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- add_css/add_javascript agora usam strings simples: o core do GLPI 11
interpola o valor uma única vez e acrescenta ?v=<versão> sozinho, o que
neutralizava o truque de __toString duplo do PluginButterflyFileVersion
(classe removida).
- CodeMirror foi removido do GLPI 11 (substituído por Monaco no core);
o init quebrava com ReferenceError. Textarea simples por ora; Monaco
entra na modernização.
- $('#tabs').tabs() removido: jQuery UI não existe mais no GLPI 11 e o
HTML das tabs já estava comentado.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Estado original vindo do servidor de origem via tar.gz, antes da
rodada de conformidade com a knowledge-base e fixes de GLPI 11.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>