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