Changelog - Template Bootstrap .Italia

Documentazione delle modifiche e implementazioni del template per Gantry 5

Release Beta

Card ponte v1.1.12-beta - Chiusura ciclo 1.1.x e passaggio a 1.2.xv1.1.12-beta

28/05/2026

✅ Operazioni registrate oggi (28/05/2026)
  • Riallineamento struttura documentale: consolidata la documentazione canonica in .github/docs/ con archivio storico in .github/docs/legacy/.
  • Pulizia root documentale: rimosso alias root non necessario di instruction_v3; mantenuto .github/instruction.md come baseline storica immutabile.
  • Hardening governance: aggiornati i documenti di migrazione/freeze per esplicitare eccezioni, policy legacy e percorso canonico operativo.
  • Deduplicazione legacy: rimossa la copia esatta Gap_analysis_V3.md da legacy, mantenendo il solo documento canonico .github/docs/06_analysis/01_gap_analysis_v3.md.
  • Governance Atom CDN conservativa: mantenuto il default 2.18.1 negli atom bootstrapitalia-cdn e bootstrapitalia-icons; la migrazione BI3 richiede il riallineamento coordinato di classi, markup e riferimenti documentali prima di qualunque cambio di versione runtime.
  • Chiusura ciclo: formalizzata la fine del versionamento 1.1.x in questo changelog e apertura del prossimo ciclo su 1.2.x.

Sessione v1.1.11-beta - Normalizzazione Tipograficav1.1.11-beta

21/05/2026

🎯 Obiettivo Versione
  • Rimuovere residui legacy: censire e valutare la permanenza della chiave titillium-web quando e gia presente la famiglia canonica Titillium Web.
  • Verificare coerenza naming Roboto Mono: controllare riferimenti tra roboto-mono e forma leggibile Roboto Mono per evitare mismatch nei richiami.
  • Verificare coerenza naming Lora: controllare riferimenti tra lora e Lora in configurazioni e stili.
  • Confermare impatti runtime: validare che il naming finale non introduca regressioni su compilazione SCSS, rendering frontend e fallback font.
✅ Implementazioni registrate (21/05/2026)
  • Pulizia definitiva chiavi font duplicate: in gantry/theme.yaml rimossi i blocchi legacy duplicati (titillium-web, roboto-mono, lora) mantenendo solo le famiglie canoniche Titillium Web, Roboto Mono e Lora.
  • Allineamento preset tipografici: in gantry/presets.yaml confermata uniformita su tutti i preset con body-font/heading-font/menu-font a Titillium Web e body-font-size/menu-font-size a 1rem.
  • Policy preset documentata: aggiunta nota operativa in testa a gantry/presets.yaml per fissare i default e i casi d'uso specifici di Lora e Roboto Mono.
  • Uniformita blueprint admin: aggiornato blueprints/styles/fonts.yaml con guidance d'uso e campi convertiti a select.select con opzioni canoniche bloccate (Titillium Web, Lora, Roboto Mono).

Sessione v1.1.10-beta - Consolidamento Semantic Auditv1.1.10-beta

21/05/2026

✅ Implementazioni registrate (21/05/2026)
  • Analisi comparativa ON/OFF atom: eseguita verifica con cache pulita e ricompilazione asset; confermata differenza di comportamento tra marker menu server-side e fallback atom su criteri semantici policy.
  • Hardening policy footer-aware: aggiornato particles/bootstrapitalia-semantic-audit.html.twig per ricerca prioritaria privacy/accessibilita nel footer e fallback mirato in area footer nei casi assenti.
  • Data-element ricerca (oggi): confermata integrazione nella particella particles/bootstrapitalia-modale-ricerca.html.twig dei marker search-modal-button, search-modal-input e search-submit per allineamento ai gatherer di ricerca.
  • Data-element breadcrumb (ieri): tracciato il precedente inserimento del marker breadcrumb in html/mod_breadcrumbs/default.php, mantenuto come base server-side stabile per la conformita semantica.
  • Semplificazione UI blueprint atom: ridotto particles/bootstrapitalia-semantic-audit.yaml a toggle enabled + alert operativo per prevenire disattivazioni accidentali durante gli scan.
  • Allineamento documentale: documento tecnico rinominato/spostato in .github/semantic-audit-compliance.md e aggiornato con esiti test, rischi, mitigazioni e soluzioni alternative valutate.
  • Changelog allineato: collegamento della card di sessione al documento tecnico in .github.

Planning v1.1.9-beta - Verifica Font e Ottimizzazione Assetv1.1.9-beta

20/05/2026

🎯 Obiettivo Versione
  • Override breadcrumbs aggiornato: aggiunto data-element="breadcrumb" all’elemento <ol> per conformità ai requisiti Modello Comuni/Scuole e validatore automatico. Da ottimizzare/minimalizzare se la presenza della particella risulta non necessaria in produzione.
  • Verifica asset font: audit completo font caricati (percorsi, formati, CDN fallback).
  • Ottimizzazione runtime: verificare caricamento font in produzione e performance baseline.
  • Tracciamento issue: registrazione task urgenti per iterazione successiva.
⏳ Task In Progress
  • Verifica font caricati: ispezione directory fonts/ e riferimenti CSS/SCSS.
📘 Criterio di conformita: C.SC.1.1 - Coerenza utilizzo font
  • Requisito: headings (h1-h6) e paragrafi (p) delle pagine in lingua italiana devono usare come default Titillium Web, Lora o Roboto Mono, con presenza dei data-element previsti dalla documentazione delle app di valutazione.
  • Verifica automatica: controllo dei selettori e dei data-element su template/override per garantire che i font di default richiesti siano applicati all'interno di tutti gli heading e paragrafi analizzati.
  • Riferimenti: Requisiti e modalita di verifica - Scuole e Documentazione App di valutazione dell'adesione ai modelli.
✅ Implementazioni registrate (20/05/2026)
  • Override locale particella menu Gantry: creato particles/menu.html.twig nel template per svincolare la semantica dal core Gantry (nucleus) e permettere gestione server-side dei marker data-element direttamente nel rendering menu.
  • Marker menu server-side in Twig: introdotti nel rendering della particella menu i marker menu, overview, school-locations, service-type e mappatura submenu (school-submenu, services-submenu, news-submenu, teaching-submenu, fallback custom-submenu).
  • Nuovo Atom di supporto semantico: introdotti particles/bootstrapitalia-semantic-audit.yaml e particles/bootstrapitalia-semantic-audit.html.twig per applicare fallback non distruttivi ai data-element richiesti dal validatore, inclusa opzione di rendering statico minimo per crawler/headless.
  • Mappatura fallback data-element: coperti i marker overview, school-submenu, services-submenu, news-submenu, teaching-submenu, custom-submenu, service-type, service-link, pager-link, search-modal-button e school-locations; supportata anche mappatura manuale via selettori configurabili.
  • Riesecuzione audit e pivot strategico: validatore rieseguito piu volte con subset scuola completo; persistenza errori sui gatherer (school-locations, search-modal-button, search-modal-input). Definita strategia definitiva: marker obbligatori da inserire nel markup server-side (override/template), Atom mantenuto come strumento ausiliario.
  • Consolidamento convenzioni override Joomla: aggiornato .github/joomla_override_conventions.md con le lezioni apprese dall'audit del 19/05/2026, introducendo regola operativa obbligatoria (confronto, confronto, confronto), classificazione TENERE / ELIMINARE, policy header uniformi e checklist di chiusura release.
  • Inventario override aggiornato: completato l'inventario attivo con mod_breadcrumbs e definita formalmente la distinzione tra layer sezione/layout e layer override Joomla.
  • Refactor architetturale breadcrumb: separata la responsabilita styling tra scss/bootstrapitalia/_bi-breadcrumb.scss (solo sezione/layout) e layer modulo Joomla dedicato.
  • Normalizzazione naming SCSS override: rinominato il file modulo da scss/bootstrapitalia-joomla/_breadcrumb.scss a scss/bootstrapitalia-joomla/_bi-breadcrumbs.scss, allineandolo allo standard attivo dei file _bi-*.
  • Header metadata SCSS breadcrumb: aggiunto header descrittivo coerente con _bi-finder.scss e _bi-user.scss per identificare chiaramente il file dedicato a mod_breadcrumbs.
  • Import chain Joomla aggiornata: modificato scss/bootstrapitalia-joomla.scss con import esplicito di bootstrapitalia-joomla/bi-breadcrumbs, rendendo attivo il layer modulo dedicato nel flusso di compilazione Joomla.
  • Cleanup legacy breadcrumb: eliminato il precedente file _breadcrumb.scss dopo migrazione completa delle regole utili e rimozione delle incongruenze legacy rispetto al markup moderno dell'override html/mod_breadcrumbs/default.php.

Chiusura v1.1.8-beta - Audit Override e Standardizzazione Headerv1.1.8-beta

19/05/2026

🎯 Obiettivo Versione
  • Continuità operativa: avviare la nuova iterazione mantenendo coerenza con le baseline tecniche consolidate nella versione precedente.
  • Tracciamento attività: usare questa card come riferimento unico per pianificazione e stato avanzamento dei prossimi task.
  • Governance release: mantenere allineati metadata, changelog e checklist di chiusura versione.
✅ Implementazioni registrate (19/05/2026)
  • Ottimizzazione metadata autore nei file contesto: allineamento intestazioni autore/documentazione nei file di ingresso template e componenti core di contesto (tra cui component.php, index.php, error.php, offline.php, install.php, includes/theme.php).
  • Metadata distribuzione in templateDetails.xml: confermata valorizzazione licenza con riferimento GPLv2 (<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2</license>) e aggiunta sezione update server (<updateservers>) verso il feed ufficiale del template.
  • Nuova documentazione distribuzione: creato il file .github/DISTRIBUTION-STRATEGY.md per formalizzare strategia di packaging/distribuzione e governance rilascio.
✅ Implementazioni registrate (19/05/2026) — sessione 2
  • Allineamento override com_users a Joomla 5/6: applicati fix chirurgici su 7 file override seguendo strategia concordata (nessuna modifica alle classi CSS o al layout del template):
    • html/com_users/reset/default.php: fallback titolo label → legend ($fieldsetTitle), guard descrizione vuota, aggiunto renderControlFields().
    • html/com_users/reset/confirm.php: aggiunta guard descrizione (fallback e renderControlFields() già presenti).
    • html/com_users/reset/complete.php: rifinitura guard trim((string) $fieldset->description).
    • html/com_users/remind/default.php: fallback $fieldsetTitle, aggiunto renderControlFields().
    • html/com_users/registration/default.php: fallback $fieldsetTitle, guard descrizione, aggiunto renderControlFields().
    • html/com_users/profile/edit.php: fallback $fieldsetTitle, guard descrizione, aggiunto <input type="hidden" name="option" value="com_users"> nel submit (presente nel core, mancante nell'override).
    • html/com_users/login/default_login.php: aggiunto renderControlFields() dopo HTMLHelper::_('form.token'); le differenze strutturali (description dentro il form, classe alert alert-info) sono personalizzazioni intenzionali mantenute.
  • Rimozione override html/layouts/joomla/system/message.php: il file era un residuo Gantry/Hydrogen per compatibilità Joomla 3 (meccanismo include condizionale al core per J4+, markup BS3 per J3). Non conteneva nessuna personalizzazione Bootstrap Italia reale. Eliminato: Joomla usa direttamente il proprio core layout, che è il comportamento corretto per un override che non ha nulla da sovrascrivere.
✅ Implementazioni registrate (19/05/2026) — sessione 3: Audit completo e standardizzazione header
  • Audit sistematico file override PHP: condotta verifica completa di 21 file override in html/com_finder/search/, html/com_users/login/, html/com_users/profile/, html/com_users/registration/, html/com_users/remind/, html/com_users/reset/, html/mod_breadcrumbs/ mediante confronto sistematico riga-per-riga con file clone di Joomla 6.x (formato snapshot: *-20260519-HHMMSS.php).
  • Classificazione TENERE/ELIMINARE:
    • TENERE (18 file): Tutti contenevano personalizzazioni reali Bootstrap Italia o logica Joomla 6.x specifica. Header aggiunti con anno 2009 (com_users) o 2021 (com_finder), autore Claudio Rosselli, percorso file, diciture standard (Override di / Joomla 6.x core).
    • ELIMINARE (3 file): Rimossi (sia locale che remoto): html/com_users/login/default.php (identico a core), html/com_users/profile/default.php (identico a core), html/com_users/registration/complete.php (wrong file — era reset/complete form, generato da backend override con view errata).
  • Standardizzazione header uniformi: applicato formato coerente a tutti i 18 file TENERE. Header include: tag opening <?php, commento author/year/file path, diciture standard (Override di [path] / Joomla 6.x core), dichiarazioni defined security, logic avvio. Risolti 5 header errati identificati nel controllo finale (wrong path reference, blank lines, URL impropri).
  • Verifiche finali SCSS: confermato scss/bootstrapitalia/_bi-finder.scss (header 2026 presente) e scss/bootstrapitalia/_bi-user.scss (header precedente validato) con tutte le classi custom in uso e nessun orfano.

Nota informativa v1.1.7-beta - Allineamento Versioningv1.1.7-beta

13/05/2026

ℹ️ Dettaglio Registrazione
  • Scopo: registrazione esclusiva del cambio versioning nei file metadata.
  • Versione impostata: <version>1.1.7-beta</version>.
  • Data impostata: <creationDate>May 13, 2026</creationDate>.
  • Ambito: nessun task tecnico, nessuna modifica funzionale e nessun ciclo di sviluppo associato.

Chiusura v1.1.6-beta - Ottimizzazione Grafica Footer/Menuv1.1.6-beta

06-11/05/2026

🎯 Obiettivo Versione
📌 Requisiti Normativi Footer
  • indirizzo, codice fiscale/partita IVA, contatti (compresa la posta elettronica certificata);
✅ Implementazioni registrate (07/05/2026)
  • Particella copyright istituto: consolidata la particella bootstrapitalia-copyright-istituto con aggiornamenti su Twig/SCSS e import nel main entrypoint scss/bootstrapitalia.scss.
  • I18n particella: aggiunte e collegate le chiavi lingua dedicate nei file language/it-IT/it-IT.tpl_bootstrapitalia.ini e language/en-GB/en-GB.tpl_bootstrapitalia.ini, con utilizzo |trans nel Twig.
  • Fix output contatti: risolto il caso di rendering senza spazio dopo i due punti per email/PEC tramite spaziatura non separabile nel markup della particella.
  • Hardening CSS runtime: aggiunto fallback mirato in custom/css-compiled/custom.css per garantire visibilita di separatori e linea centrale anche in assenza di compilazione SCSS completa.
  • Riordino dipendenze SCSS: riorganizzato scss/bootstrapitalia.scss in blocchi logici (Foundation, Layout Sections, Shared Components & Helpers, Particles) per migliorare leggibilita e manutenzione.
  • Ottimizzazione breadcrumb sezione: aggiornato scss/bootstrapitalia/_bi-breadcrumb.scss con miglioramenti su stato attivo, separatori, focus, scorrimento orizzontale mobile e supporto al wrapper del modulo.
  • Override modulo Joomla: rivisitato l'override in html/mod_breadcrumbs/default.php in ottica markup/stile, mantenendo invariata la logica applicativa e aggiungendo la semantica del breadcrumb corrente.
✅ Implementazioni registrate (11/05/2026) — Tokenizzazione SCSS e pulizia configurazione
  • Tokenizzazione completa hardcoded values: eliminati tutti i valori numerici hardcoded dai file di sezione e particella SCSS, sostituiti con token C3 centralizzati in scss/configuration/_dimensions.scss e scss/configuration/_z-index.scss. File coinvolti: _bi-header.scss, _bi-navigation.scss, _bi-menu.scss, _bi-dropdownanimations.scss, _bootstrapitalia-logo.scss, _bootstrapitalia-icone-link.scss, _bootstrapitalia-modale-ricerca.scss.
  • Nuovi token _dimensions.scss: aggiunti token per Header Layout, Menu Dimensions (inclusi $menu-col-width, $menu-border-width, $menu-border-opacity-*), Logo, Socials e Search Modal (padding, border, opacity, scale, font-weight, letter-spacing, line-height).
  • Nuovi token _z-index.scss: aggiunti $z-local-content: 1, $z-local-background: -1 per stacking context locale dei componenti; aggiunto alias $search-modal-overlay-z-index puntante a $z-modal.
  • Rimozione dead code scss/mixins/_nav.scss: eliminati il placeholder %dropdown-column e il mixin main-nav-colors, entrambi privi di utilizzo nel progetto. Mantenuto main-nav-indicators ancora in uso in _bi-menu.scss.
  • Eliminazione scss/configuration/_nav.scss: file contenente solo $menu-col-width, token spostato in _dimensions.scss (sezione Menu Dimensions); rimosso l'@import "nav" da scss/configuration/_base.scss.
  • Fix regressione $search-modal-overlay-z-index: variabile rimossa da _dimensions.scss senza essere definita in _z-index.scss; risolto aggiungendo l'alias nel file corretto.
  • Fix YAML bootstrapitalia-icone-link.yaml: aggiunto campo text mancante sotto icone.items; default impostato a stringa vuota per delegare la traduzione al fallback |trans nel Twig.
✅ Implementazioni registrate (11/05/2026 - Sessione 2) — Tokenizzazione footer/copyright/top/offcanvas
  • Tokenizzazione footer/copyright/istituto: eliminati 8 hardcoded da _bi-footer.scss, _bi-copyright.scss e _bootstrapitalia-copyright-istituto.scss. Nuovi token introdotti: $istituto-font-size, $istituto-divider-border-width, $istituto-divider-border-opacity, $istituto-mobile-font-size; sostituite due istanze di outline: 2px / outline-offset: 2px con $focus-outline-width/$focus-outline-offset.
  • Tokenizzazione systemmessages: sostituito font-size: 1.25rem con nuovo token $systemmessages-close-button-font-size nel pulsante chiusura joomla-alert.
  • Tokenizzazione top menu: nuovi token $top-menu-parent-indicator-margin-left (5px) e $top-menu-parent-indicator-top (9px) aggiunti a _dimensions.scss; sostituite due istanze di outline: 2px/outline-offset: 2px con token focus globali; sostituito font-weight: 400 con $font-weight-regular.
  • Offcanvas-toggle mobile-critical SKIP: mantenuti intatti width: 44px; height: 44px, margini mobile 0.75rem/1rem, e top: 1.7rem in offcanvas-right — questi valori sono ottimizzati chirurgicamente per il layout mobile e non vanno modificati. Token $focus-outline-width/$focus-outline-offset applicati solo alla sezione non-mobile (:active/:focus/:focus-visible).
  • Nessun errore compilazione: tutti i 4 file SCSS aggiornati con validazione editor pulita; $focus-outline-width e $focus-outline-offset già definiti in _core.scss, quindi nessuna regressione di undefined variable.

Current v1.1.5-beta - Footer, Menu Particle, Install Alert e About Commercialev1.1.5-beta

06/05/2026

🎯 Task pianificati
  • Task 1 - Ottimizzazione footer: completato. Applicata la sequenza operativa proposta su scss/bootstrapitalia/_bi-copyright.scss, scss/bootstrapitalia/_bi-footer.scss e scss/bootstrapitalia/_bi-breadcrumb.scss (cleanup selettori legacy non utilizzati, convergenza token dinamici, rifiniture accessibilita link/focus).
  • Task 2 - Menu particle / Navigation: completato. Consolidati allineamento header/menu/navigation con interventi su scss/bootstrapitalia/_bi-menu.scss, scss/bootstrapitalia/_bi-navigation.scss e scss/bootstrapitalia/_bi-dropdownanimations.scss (container coerenti, uppercase ripristinato, dropdown con sottovoci a colore scuro su fondo bianco e hover accent).
  • Task 3 - Install style: completato. Ottimizzato install/templates/style.html.twig con correzione layout hero/altezza e allineamento del margine wrapper per coerenza visiva in installazione/aggiornamento.
  • Task 4 - About commerciale: completato. Aggiornati i contenuti in admin/templates/pages/about/about.html.twig e completata esternalizzazione i18n su file lingua (language/it-IT/it-IT.tpl_bootstrapitalia.ini, language/en-GB/en-GB.tpl_bootstrapitalia.ini).
  • Aggiornamento non programmato - Bootstrap Italia 2.18.1: completato. Allineati fallback/versioni negli atom particles/bootstrapitalia-cdn.html.twig, particles/bootstrapitalia-icons.html.twig, particles/bootstrapitalia-cdn.yaml, particles/bootstrapitalia-icons.yaml e aggiornati i riferimenti CDN nelle pagine changelog.
  • Regressione rientrata - Preset/Switcher: ripristinato da backup gantry/presets.yaml (file risultato vuoto). Confermato che il malfunzionamento dello switcher dipendeva dal preset mancante; mantenuti i miglioramenti difensivi su particella switcher (hardening CSS/JS e pulizia ridondanze Twig).
  • Nota manifest: verificare in templateDetails.xml che <file>install.php</file> sia presente e coerente con <scriptfile>install.php</scriptfile>.
🧩 Matrice coerenza task 1.1.5 - completata
  • T1 Footer completato con cleanup preliminare su _bi-copyright.scss e convergenza validata con _bi-breadcrumb.scss.
  • T2 Menu particle / Navigation completato: chiusa l'ottimizzazione su menu default Gantry con coerenza finale container/dropdown e rifiniture responsive di base validate.
  • T3 Install style completato su install/templates/style.html.twig con fix di coerenza sul margine della hero wrapper.
  • T4 About commerciale completato in parallelo a T3 con esternalizzazione su language file per i18n/manutenibilita.
  • Upgrade Bootstrap Italia 2.18.1 completato come intervento fuori piano task, con impatto su atom CDN/icons e documentazione changelog.
  • Incidente preset rientrato: ripristino backup di gantry/presets.yaml e conferma root cause sulla perdita contenuto file (non legata alla versione CDN).
  • Ordine esecuzione adottato: T1 -> T2 -> T3/T4 con completamento dell'intero piano 1.1.5 nel perimetro tecnico definito.
🔗 Verifica concatenazioni (scope tecnico) - completata
  • Catena Header/Menu/Navigation: verifica completata con coerenza confermata tra scss/bootstrapitalia/_bi-header.scss, scss/bootstrapitalia/_bi-menu.scss, scss/bootstrapitalia/_bi-navigation.scss e scss/bootstrapitalia/_bi-dropdownanimations.scss rispetto alle particelle bootstrapitalia-logo, bootstrapitalia-icone-link e bootstrapitalia-modale-ricerca.
  • Catena Top/Offcanvas: verifica completata tra scss/bootstrapitalia/_bi-top.scss, scss/bootstrapitalia/_bi-offcanvas.scss e scss/bootstrapitalia/_bi-offcanvas-toggle.scss rispetto alle particelle bootstrapitalia-preset-switcher e bootstrapitalia-modale-login, con fix applicati su duplicazione _bi-top.scss e ripristino comportamento preset switcher ai breakpoint.
  • Nota operativa: esclusione delle particelle dal menu mobile offcanvas mantenuta intenzionalmente (nessuna azione richiesta).
🧭 Sequenza operativa proposta - completata
  • Step A - Dal basso verso l'alto: completato su _bi-copyright.scss, _bi-footer.scss, _bi-breadcrumb.scss, con risalita coerente a _bi-navigation.scss, _bi-header.scss e _bi-top.scss.
  • Step B - Cleanup residui package: completato in footer/copyright con rimozione riferimenti legacy a particelle non presenti nel pacchetto (in particolare selettori .g-social e .g-features2-particle).
  • Step C - Breadcrumb/Copyright: convergenza stilistica e semantica validata tra _bi-breadcrumb.scss e _bi-copyright.scss (token dinamici + stati focus coerenti).
  • Step D - Footer Bootstrap Italia: rifinitura footer completata con allineamento componenti, spacing, accessibilita e token runtime.
  • Riferimento ufficiale footer: usare come baseline progettuale la documentazione Bootstrap Italia Menu di navigazione / Footer - Introduzione.
  • Riferimento ufficiale breadcrumbs: usare come baseline progettuale la documentazione Bootstrap Italia Menu di navigazione / Breadcrumbs.
  • Riferimento ufficiale header/navigation/menu: usare come baseline progettuale la documentazione Bootstrap Italia Menu di navigazione / Header.

Completamento v1.1.4-beta - Allineamento Colori, Hardening Finder e Particlesv1.1.4-beta

12-13/03/2026

✅ Modifiche completate
  • Allineamento preset base: aggiornato scss/configuration/_colors.scss usando gantry/presets.yaml come source of truth (accent, drawer/top/header/navigation e sezioni light).
  • Bridge runtime: creato scss/configuration/_css-tokens.scss con blocco :root per esporre token semantici e Bootstrap (--base-*, --primary-*, --bs-primary, --well-background).
  • Import chain: aggiunto @import "css-tokens"; in scss/configuration/_base.scss come ultimo import.
  • Preset switcher runtime: in particles/bootstrapitalia-preset-switcher.html.twig aggiunti --base-text-color e --base-title-color in entrambi i blocchi style (head + fallback inline).
  • Finder semantic fix: in scss/bootstrapitalia-joomla/_bi-finder.scss il bottone calendario usa ora --primary-color e stato :active su --primary-medium (coerente con semantica action).
  • Hardening bottoni dinamici: consolidata una catena unica per primary buttons con token condivisi --bi-btn-primary-* e integrazione con variabili Bootstrap focus.
  • Fix definitivo finder advanced: eliminato il residuo statico blu su btn-outline-primary in focus/focus-visible con override della proprieta finale box-shadow nel contesto componente.
  • Estensione normalizzazione: allineati file sezione scss/bootstrapitalia/_bi-*.scss e particles (_bootstrapitalia-modale-login.scss, _bootstrapitalia-logo.scss) ai token dinamici, mantenendo coerenza per modale-ricerca e icone-link.
  • Aggiornamento versioni particelle (metadata YAML): aggiornate le versioni delle particelle modificate nella sessione odierna, mantenendo lo storico delle release precedenti invariato (icone-link v1.0.8, logo v1.0.5, modale-login v1.0.6, modale-ricerca v1.0.8, preset-switcher v1.0.5).
  • Centralizzazione documentale override: dismessi i README locali di html/com_users e html/com_finder, consolidando convenzioni e note operative in .github/joomla_override_conventions.md.
  • Pulizia commenti SCSS release-friendly: rimossi i blocchi header documentali in _bi-user.scss, _bi-finder.scss e _bi-systemmessages.scss, con documentazione centralizzata nei file .github.
🔎 Verifica eseguita
  • Token runtime presenti: confermata presenza dei nuovi token nei due punti del preset switcher.
  • Import attivo: confermato import css-tokens nella chain configuration.
  • Finder coerente: confermata sostituzione dei riferimenti residuali con token action primari nel blocco filtri avanzati.
  • Computed style validation: verificata la rimozione dei residui blu statici nei percorsi critici di focus del finder.
  • Corrispondenza task-release: riallineata la sezione riassuntiva iniziale con lo stato reale della release e con le modifiche effettivamente completate.
  • Integrità pacchetto: eseguito python3 .github/scripts/regenerate-md5sums.py con esito OK.
🔐 Chiusura micro-versione particle v1.0.4
  • Valore storico preservato: la chiusura v1.0.4 resta valida come milestone storica nel contesto originale.
  • Evoluzione successiva tracciata: gli aggiornamenti funzionali/strutturali successivi sono registrati nella release corrente con bump coerente dei metadata YAML delle particelle coinvolte.
  • Decisione di governance: nessuna rinumerazione retroattiva delle versioni passate; aggiornamento applicato solo alla sezione odierna.

Session Planning v1.1.3-beta - Definizione Task 2 e Chiusura Task 4v1.1.3-beta

03/03/2026

🎯 Obiettivo Sessione
  • Task 2: avanzamento quasi completo, ma non chiuso definitivamente per issue residua sul contorno del bottone advanced finder.
  • Task 4: verifica di completamento confermata tramite storico (v1.1.1-beta: validazione end-to-end) e governance versioning_closure.md.
  • Release readiness: consolidare checklist preflight (versioni, lint, md5, coerenza import chain).
  • Chiusura versione (obbligatoria): applicare e completare versioning_closure.md.
✅ Verifiche eseguite (02/03/2026)
  • Manifest integrità: eseguito python3 .github/scripts/regenerate-md5sums.py con esito OK.
  • Output MD5SUMS: file rigenerato con 287 entry; esclusioni applicate: .github/, changelogs/, custom/, backup_*/, *.log.
  • Installer lint: eseguito php -l install.php con esito No syntax errors detected.
🧾 Allineamento documentazione (02/03/2026)
  • Allineamento complessivo completato: in data 02/03/2026 è stato completato l'allineamento di tutta la documentazione di progetto (file .md in .github/ e contenuti changelog).
  • Struttura repository: aggiornato .github/structure.md con allineamento file documentali e cartella .github/scripts/.
  • Governance chiusura release: introdotta checklist dedicata in .github/versioning_closure.md.
  • Coerenza riferimenti: allineati link e naming case-sensitive dei documenti in .github.
  • Continuità operativa: la prosecuzione dei task è pianificata per la giornata del 03/03/2026.

Sessioni v1.1.2-beta - Predisposizione + Aggiornamento Task 2v1.1.2-beta

24-25 Febbraio 2026

🧭 Sessione 24/02/2026 - Predisposizione
  • Ripartenza ordinata: usare baseline v1.1.1-beta già validata (preflight verde).
  • Focus operativo: avanzamento Task 2 e Task 3 con verifiche incrementali.
  • Controllo rilascio: mantenere allineamento versioni/lint/md5 al termine sessione.
✅ Sessione 25/02/2026 - Aggiornamento Operativo
  • Finder form + modale ricerca: allineata variante UI intermedia su wrapper awesomplete (coerenza visiva senza effetto boxed).
  • Dynamic color governance: introdotti token semantici C3 per finder in scss/configuration/_colors.scss ($finder-*-color per explained/empty e azioni).
  • Explained query/empty state: p e span portati a ereditarietà colore dinamica, con fallback semantici centralizzati.
  • Fix critico bottone outline: su .btn-outline-primary finder adottate variabili native Bootstrap --bs-btn-* per garantire bordo/stati realmente dinamici a runtime.
  • Particles ottimizzate: allineamento comportamento/stile modale ricerca al finder su input-group e wrapper awesomplete (variante intermedia coerente).
  • Versioning particella: aggiornata la versione della particella ricerca in metadata YAML (particles/bootstrapitalia-modale-ricerca.yaml).
  • Import chain ripristinata: verificato e ripristinato scss/bootstrapitalia-joomla.scss con import necessari (configuration/base, mixins/base, bootstrapitalia-joomla/bi-finder).
  • Validazione: controlli statici su file SCSS aggiornati senza errori; verificata coerenza documentale con instruction.md e convenzioni override.

Sprint Setup v1.1.1-beta - Ripresa Task Incompletiv1.1.1-beta

23 Febbraio 2026

🎯 Obiettivo Versione
  • Continuità: Nessuna regressione su hero section e internazionalizzazione introdotte in v1.1.0-beta
  • Focus: Ripartenza dai task non completati (Task 2, Task 3, Task 4)
  • Orizzonte: Impostazione backlog e base tecnica per lo sprint della prossima settimana
📌 Attività Riprese (Carry-over da v1.1.0-beta)
  • Task 2 - Override com_finder: completamento implementazione e validazione end-to-end degli override ricerca Joomla
  • Task 3 - Audit Design System: verifica coerenza metadata/import chain e cleanup duplicazioni residue in area SCSS
  • Task 4 - Sincronizzazione file tra versioni: bootstrap implementato (snapshot pre-update, confronto post-update, backup file rimossi, cleanup orphan, whitelist path protetti, log operazioni)
✅ Avanzamento Task 4 (Fase 1)
  • Preflight update: snapshot lista file release corrente letta da MD5SUMS e salvata in tmp
  • Postflight update: diff vecchia vs nuova release e individuazione file orphan
  • Sicurezza: validazione path dentro root template + esclusione automatica di custom/ e file *.log
  • Rollback manuale: backup preventivo in cartella custom/sync-runtime/backup_YYYYMMDD_HHMMSS/ prima della cancellazione
  • Audit trail: generazione log custom/sync-runtime/install_cleanup_<version>_<timestamp>.log con summary finale
  • MD5SUMS standardizzato: introdotto comando ufficiale python3 .github/scripts/regenerate-md5sums.py per rigenerazione release-safe del manifest
  • Policy esclusioni manifest: confermata esclusione di .github/, changelogs/, custom/, backup e file *.log dal pacchetto distribuito
🔁 Consolidamento Task 4 (validazione reale)
  • Test end-to-end riuscito: cleanup eseguito con output 10 eliminati, 0 protetti, 0 non trovati, 0 errori e log operativo generato.
  • Root cause verificata: il confronto basato solo su manifest non intercettava sempre file residui non tracciati; introdotto fallback su file system reale.
  • Policy sicurezza aggiornata: protezione esplicita di changelogs/ nella whitelist per evitare cancellazioni accidentali durante lo sviluppo.
  • Policy permanente adottata: workflow documentato in .github/instruction.md con regole dev/prod su cleanup, backup e log.
  • Produzione pronta: percorso runtime dedicato in custom/sync-runtime/ e checklist go-live formalizzata per staging → produzione.
  • Crediti installer aggiornati: header di install.php riallineato con attribuzione upstream (RocketTheme/Tiger12) + maintainer corrente e copyright custom.
  • Preflight rilascio ✅: versioni allineate 1.1.1-beta, php -l install.php OK, MD5SUMS senza mismatch.

Milestone v1.1.0 - Nuove Funzionalità e Miglioramentiv1.1.0-beta

17 Febbraio 2026

📝 Apertura Milestone
  • Data apertura: 17 Febbraio 2026
  • Base riferimento: v1.0.22-beta + v1.0.22+ cleanup (16/02/2026)
  • Obiettivo: Implementazione funzionalità post-stabilizzazione architettura SCSS
  • Nota architetturale: Pacchetto v1.0.22+ chiuso con pulizia dead code SCSS completata
✅ Task Completati
  • Task 1 - Personalizzazione Install Templates con Hero Section Bootstrap Italia:
    • Stato: ✅ COMPLETATO (Fase 1: 5 iterazioni hero section il 17/02, Fase 2: i18n + bug fix il 18/02)
    • Durata totale: ~120 minuti (~60 min Fase 1 + ~60 min Fase 2)
  • Files modificati Fase 1:
    • install/templates/style.html.twig (145 righe) - Hero section completa CSS inline
    • install/templates/update.html.twig - Struttura hero con 1 bottone
    • install/templates/install.html.twig - Struttura hero con 2 bottoni
  • Iterazione 1 - Rimozione RocketTheme:
    • ❌ Rimosso: Background-image inline base64 RocketTheme PNG (~112 KB risparmiati)
    • ❌ Rimosso: Link tiger12.com, container .g5-rockettheme
    • ✅ Aggiunto: Struttura .g5i con stili Bootstrap Italia custom
    • ✅ Aggiunto: Crediti Claudio Rosselli (iamawebmaster.com)
  • Iterazione 2-4 - Fix Contrasto Light/Dark Mode:
    • ⚠️ Problema: Border-left #0066cc 5px creava conflitto visivo con alert-info
    • ✅ Fix: Rimosso border-left, margin 0, background transparent
    • ⚠️ Problema: Bottoni bianchi su sfondo chiaro alert-info = scarso contrasto
    • ✅ Fix: Override .alert.alert-info .g5-button { color: #0066cc; }
    • ⚠️ Problema: Credits #666666 troppo scuro in modalità dark
    • ✅ Fix: Colore neutro #888888 cross-theme
  • Iterazione 5 - Migrazione Hero Section:
    • 🔄 Decisione: Migrazione da alert-info wrapper a it-hero-wrapper Bootstrap Italia
    • ⚠️ Problema CDN: Bootstrap Italia CDN caricava globalmente, "infettava" backend Joomla
    • ✅ Soluzione: Rimosso CDN, implementato hero section con CSS inline completo
    • ✅ Struttura HTML: section.it-hero-wrapper > .container > .row > .col-12 > .it-hero-text-wrapper
    • ✅ Elementi hero:
      • .it-category: Versione template (uppercase, tracking, opacity 0.9)
      • h2: Titolo template (2rem, bold, white)
      • p: Descrizione (nascosta mobile con d-none d-lg-block)
      • .it-btn-container: Container bottoni (flex, gap, center, wrap)
      • hr: Separatore credits (border white opacity 25%)
      • .small: Footer credits (opacity 0.8, link white)
    • ✅ Background: Gradient blu linear-gradient(135deg, #0066cc 0%, #004d99 100%)
    • ✅ Fullwidth: Hero con margini negativi margin: -15px -15px 0 (riempie alert container)
    • ✅ Fix icone duplicate: .alert-heading, .alert .icon { display: none !important; }
  • Bottoni Hero - Contrasto e Hover:
    • btn-light (primario):
      • Default: background: white; color: #0066cc;
      • Hover: background: #f0f6ff; color: #004d99; transform: translateY(-2px); box-shadow
    • btn-outline-light (secondario):
      • Default: background: rgba(255,255,255,0.1); color: white; text-shadow: 0 1px 2px rgba(0,0,0,0.2)
      • Hover: background: white; color: #0066cc; text-shadow: none; transform: translateY(-2px)
      • ✅ Fix: Background semi-trasparente + text-shadow per visibilità in dark mode
    • Transizioni: transition: all 0.3s ease (smooth animations)
    • Effetto lift: translateY(-2px) + box-shadow: 0 4px 12px rgba(0,0,0,0.15)
  • Responsive Design:
    • Mobile (<768px): Padding ridotto (2rem 1rem), h2 1.5rem, p 0.875rem
    • Desktop: Paragrafo visibile con d-none d-lg-block
    • Bottoni: flex-wrap per stack verticale su mobile
  • CSS Inline - No Dependencies:
    • ✅ Zero dipendenze CDN (evita conflitti backend Joomla)
    • ✅ Tutti gli stili inline (145 righe style.html.twig)
    • ✅ Colori hardcoded Bootstrap Italia (#0066cc, #004d99, #f0f6ff)
    • ✅ Grid system simulato con container/row/col-12 (no JS Bootstrap richiesto)
  • Risultati Finali:
    • ✅ Zero riferimenti RocketTheme/tiger12 nel codebase
    • ✅ Hero section Bootstrap Italia visivamente coerente
    • ✅ Contrasto perfetto light/dark mode (WCAG AA)
    • ✅ Hover effects smooth e accessibili
    • ✅ Nessun conflitto con backend Joomla (no CDN globale)
    • ✅ Icone alert Joomla nascoste (no duplicazioni)
    • ✅ Responsive completo mobile-first
    • ✅ Performance ottimale: CSS inline minimo necessario
  • Validazione:
    • grep -c "tiger12\|rockettheme" = 0 matches
    • grep -c "it-hero-wrapper" = 2 matches (update + install)
    • grep -c "cdn.jsdelivr\|bootstrap-italia" = 0 matches (no CDN)
    • ✅ Test visivo: Contrasto bottoni OK in light/dark, hover animato, no icone duplicate
  • Implementazione Internazionalizzazione (i18n):
    • Obiettivo: Sostituire stringhe hardcoded hero section con costanti lingua traducibili
    • Files lingua modificati:
      • language/it-IT/it-IT.tpl_bootstrapitalia.ini - Aggiunta sezione "Install Template Messages" (7 costanti iniziali)
      • language/en-GB/en-GB.tpl_bootstrapitalia.ini - Traduzioni inglesi delle stesse costanti
    • Costanti implementate (v1 - iniziali):
      • TPL_BOOTSTRAPITALIA_INSTALL_TITLE - "Template Installato" / "Template Installed"
      • TPL_BOOTSTRAPITALIA_INSTALL_DESC - Descrizione configurazione template
      • TPL_BOOTSTRAPITALIA_INSTALL_BTN_CONFIGURE - "Configura Template" / "Configure Template"
      • TPL_BOOTSTRAPITALIA_INSTALL_BTN_SAMPLE - "Installa Dati di Esempio" / "Install Sample Data"
      • TPL_BOOTSTRAPITALIA_POWERED_BY - "Powered by"
      • TPL_BOOTSTRAPITALIA_POWERED_BY_AUTHOR - "Claudio Rosselli" (poi rimossa - v2 cleanup)
      • TPL_BOOTSTRAPITALIA_POWERED_BY_URL - "https://iamawebmaster.com" (poi rimossa - v2 cleanup)
    • Template modificati (tentativo iniziale):
      • install/templates/update.html.twig - Sostituzione stringhe con {{'TPL_CONST'|t}}
      • install/templates/install.html.twig - Sostituzione stringhe con {{'TPL_CONST'|t}}
  • ⚠️ Bug Critico Scoperto - Hero Section Non Visualizzata:
    • Sintomo: Dopo aggiunta costanti lingua con filtro Twig |t, hero section completamente sparita (schermo bianco)
    • Contesto problematico: Install templates renderizzati in fase isolata Gantry, prima del bootstrap completo Joomla
    • Root cause: Filtro Twig |t (translation) non disponibile nel contesto di rendering ThemeInstaller->render()
    • Diagnosi tecnica:
      • ❌ Gantry ThemeInstaller non carica automaticamente sistema lingua Joomla nel contesto Twig
      • ❌ Filtri Twig translation (|t, |trans) non registrati in ambiente install isolato
      • ❌ Sistema lingua Joomla potenzialmente non completamente inizializzato durante install phase
      • Factory::getLanguage()->load() + Text::_() funzionano correttamente lato PHP
  • ✅ Soluzione Implementata - Caricamento Lingua Lato PHP:
    • File modificato: install.php (metodo BootstrapItaliaInstallerScript::postflight())
    • Pattern architetturale: Caricamento lingua in PHP + passaggio variabili tradotte a Twig (approccio nativo Gantry)
    • Implementazione tecnica (righe 75-98):
      • Step 1: Caricamento esplicito file lingua
        $lang = Factory::getLanguage();
        $lang->load('tpl_bootstrapitalia', JPATH_SITE . '/templates/bootstrapitalia');
      • Step 2: Creazione array traduzioni con Text::_()
        $translations = array(
            'install_title' => Text::_('TPL_BOOTSTRAPITALIA_INSTALL_TITLE'),
            'install_desc' => Text::_('TPL_BOOTSTRAPITALIA_INSTALL_DESC'),
            'btn_configure' => Text::_('TPL_BOOTSTRAPITALIA_INSTALL_BTN_CONFIGURE'),
            'btn_sample' => Text::_('TPL_BOOTSTRAPITALIA_INSTALL_BTN_SAMPLE'),
            'powered_by' => Text::_('TPL_BOOTSTRAPITALIA_POWERED_BY'),
            'powered_by_author' => 'Claudio Rosselli',  // Hardcoded v2
            'powered_by_url' => 'https://iamawebmaster.com'  // Hardcoded v2
        );
      • Step 3: Passaggio array come secondo parametro a render()
        echo $installer->render('update.html.twig', $translations);
    • Template Twig aggiornati:
      • ❌ Rimosso: {{'TPL_CONST'|t}} (filtro non disponibile)
      • ✅ Aggiunto: {{ variable }} (interpolazione variabili diretta)
      • Esempio: <h2>{{ name }} - {{ install_title }}</h2>
      • Footer: {{ powered_by }} <a href="{{ powered_by_url }}">{{ powered_by_author }}</a>
    • Hardcoding valori critici (v2 refinement):
      • ⚠️ Problema riscontrato: TPL_BOOTSTRAPITALIA_POWERED_BY_AUTHOR visualizzata come stringa costante letterale (non tradotta)
      • Decisione: Hardcode valori author/URL direttamente in PHP (nome/link autore non cambiano per lingua)
      • Vantaggio affidabilità: Eliminata dipendenza da sistema lingua potenzialmente incompleto in install phase
      • Risultato: Crediti sempre visualizzati correttamente indipendentemente da stato sistema lingua
    • Risultati test:
      • ✅ Hero section visualizzata correttamente post-installazione e post-update
      • ✅ Stringhe tradotte in italiano (lingua sistema default test)
      • ✅ Cambio lingua Joomla riflesso correttamente in install templates
      • ✅ Nessun errore PHP/Twig in console o log Joomla
      • ✅ Credits "Powered by Claudio Rosselli" sempre visibili (hardcoded)
  • 🎨 Fix Contrasto Bottoni Dark Mode:
    • Problema identificato: Bottone btn-light con testo bianco su sfondo bianco in dark mode (contrasto zero)
    • Root cause: CSS specificity - stili tema Gantry sovrascrivevano inline CSS hero section
    • File modificato: install/templates/style.html.twig (riga 76)
    • Soluzione implementata:
      .btn-light {
          background: white;
          color: #0066cc !important;  /* Aggiunto !important per cross-theme consistency */
          border: 1px solid white;
      }
    • Risultati validazione:
      • ✅ Testo blu #0066cc sempre visibile su sfondo bianco
      • ✅ Contrasto WCAG AA compliant in light e dark mode
      • !important forza blu text anche con override tema aggressivi
      • ✅ Hover effect mantenuto (background: #f0f6ff; color: #004d99;)
  • 🧹 Cleanup Codice - Costanti Non Utilizzate:
    • Razionale: Dopo hardcoding author/URL in PHP, costanti lingua corrispondenti diventate obsolete
    • Principio DRY: Eliminare duplicazione informazioni (hardcoded in PHP = no need lingua file)
    • Files modificati:
      • language/it-IT/it-IT.tpl_bootstrapitalia.ini - Da 7 a 5 costanti attive
      • language/en-GB/en-GB.tpl_bootstrapitalia.ini - Da 7 a 5 costanti attive
    • Costanti rimosse:
      • TPL_BOOTSTRAPITALIA_POWERED_BY_AUTHOR="Claudio Rosselli"
      • TPL_BOOTSTRAPITALIA_POWERED_BY_URL="https://iamawebmaster.com"
    • Costanti attive finali (5 totali):
      • TPL_BOOTSTRAPITALIA_INSTALL_TITLE
      • TPL_BOOTSTRAPITALIA_INSTALL_DESC
      • TPL_BOOTSTRAPITALIA_INSTALL_BTN_CONFIGURE
      • TPL_BOOTSTRAPITALIA_INSTALL_BTN_SAMPLE
      • TPL_BOOTSTRAPITALIA_POWERED_BY
    • Benefici cleanup:
      • ✅ Codebase più pulita (no dead code)
      • ✅ Manutenzione semplificata (informazioni author in un solo punto: install.php)
      • ✅ Performance minima (2 costanti in meno da caricare/parsare)
  • 📊 Riepilogo Modifiche Fase 2:
    • Files modificati totali: 5
      • install.php (~24 righe aggiunte, metodo postflight)
      • install/templates/update.html.twig (~7 sostituzioni stringhe → variabili)
      • install/templates/install.html.twig (~8 sostituzioni stringhe → variabili)
      • install/templates/style.html.twig (1 riga, aggiunto !important)
      • language/it-IT/it-IT.tpl_bootstrapitalia.ini (sezione Install: 5 costanti finali)
      • language/en-GB/en-GB.tpl_bootstrapitalia.ini (sezione Install: 5 costanti finali)
    • Lezioni apprese:
      • 📘 Pattern Gantry install context: PHP translation + variable passing (non Twig filters)
      • 📘 Affidabilità install phase: Hardcode valori critici quando lingua system potrebbe essere incompleta
      • 📘 CSS cross-theme: !important necessario per forzare consistenza visiva in contesti isolati
      • 📘 DRY principle: Cleanup immediato informazioni duplicate dopo refactoring
    • Risultati finali validati:
      • ✅ Hero section Bootstrap Italia completamente funzionale (Fase 1 + Fase 2)
      • ✅ Internazionalizzazione completa (it-IT, en-GB), estendibile ad altre lingue
      • ✅ Contrasto perfetto WCAG AA in light/dark mode
      • ✅ Zero dipendenze CDN (tutto inline CSS)
      • ✅ Zero conflitti backend Joomla
      • ✅ Codebase pulito (no dead code, no duplicazioni)
      • ✅ Sistema lingua robusto (fallback hardcoded per valori critici)
📋 Prossimi Passi da Implementare
  • Task 2 - Implementazione Override com_finder:
    • File PHP: html/com_finder/search/*.php (default, default_form, default_results, default_result, default_sorting)
    • File SCSS: scss/bootstrapitalia-joomla/_bi-finder.scss
    • Obiettivo: Completare ottimizzazione componente ricerca Joomla con stili Bootstrap Italia
    • Note: Base documentata in changelog v1.0.20-beta, implementazione completa da finalizzare
  • Task 3 - Audit Conformità Design System:
    • Scope: Verificare file scss/configuration/ e scss/mixins/
    • Obiettivo: Assicurare conformità alle regole strutturali del design system (metadata, import chain, DRY principle)
    • Checklist: Metadata headers coerenti, eliminazione duplicazioni, validazione import dependencies, test compilazione SCSS
    • Riferimento: Standard definito in v1.0.22-beta (C3 Foundation Layer, Utility Layer Mixins)
  • Task 4 - Sistema Sincronizzazione File tra Versioni:
    • Problema identificato: File obsoleti non vengono rimossi automaticamente durante upgrade/downgrade versioni
    • Scenario critico: Se v1.1.0 elimina un file presente in v1.0.22, e si effettua downgrade a v1.0.22 seguito da re-upgrade a v1.1.0, il file obsoleto rimane nel filesystem
    • Obiettivo: Implementare meccanismo automatico di pulizia file orphan durante installazione/aggiornamento template
    • Architettura esistente da utilizzare:
      • install.php: Classe BootstrapItaliaInstallerScript con hooks preflight/postflight/update
      • MD5SUMS: File manifest esistente (110 righe) con formato filepath\thash per ogni file template
      • templateDetails.xml: Sezione <files> con elenco folder/file ufficiali, versione corrente in <version>
    • Approccio implementativo suggerito:
      1. Fase Pre-Update: Nel metodo preflight('update') leggere MD5SUMS esistente e salvare lista file versione precedente in sessione/cache
      2. Fase Post-Update: Nel metodo postflight('update') confrontare lista vecchia vs nuovo MD5SUMS + templateDetails.xml <files>
      3. Cleanup Orphan: Eliminare file presenti in lista vecchia ma assenti in nuova versione (escluso whitelist custom/)
      4. Logging: Registrare operazioni in file log per audit trail e rollback manuale se necessario
    • Considerazioni tecniche:
    • T3 -> cleanup install.php con fallback sicuro su `theme.style`.
    • T4 (già completato) -> revisione testi About con chiavi lingua dedicate.
    • ⚠️ Whitelist preservazione: Cartella custom/, file *.log, cache Gantry, configurazioni utente generate runtime
    • ⚠️ Validazione path: Verificare che path file da eliminare sia dentro JPATH_SITE/templates/bootstrapitalia/ (sicurezza)
    • Backup preventivo: Prima eliminazione, copiare file in backup_YYYYMMDD_HHMMSS/ temporaneo (rollback manuale possibile per 24h)
    • Log dettagliato: File install_cleanup_VERSION.log con timestamp, file eliminati, errori eventuale
    • MD5SUMS aggiornamento: Generare automaticamente nuovo MD5SUMS post-installazione se modificato manualmente
  • File da modificare:
    • install.php - Aggiungere logica cleanup in metodi preflight() e postflight() (classe BootstrapItaliaInstallerScript esistente)
    • MD5SUMS - Mantenere aggiornato ad ogni release (script automatico o manuale pre-packaging)
    • templateDetails.xml - Sezione <files> già presente e completa, solo verificare coerenza con MD5SUMS
  • Riferimenti tecnici:
    • Joomla Extension Lifecycle Methods
    • File install.php righe 1-125: Classe esistente da estendere con metodi cleanup
    • File MD5SUMS: Formato esistente filepath + hash MD5 (110 righe template corrente)