v1.2.4-beta (09/06/2026 - Particella Logo Header): Rifinito il comportamento del particle logo per contesti riusabili: rimosso il fallback testuale fisso su
Bootstrap .Italia quando il nome PA non e valorizzato, resa condizionale della sola area testuale, allineamento responsive con nascondimento di Tipo di PA su breakpoint come Nome della citta, e ottimizzazione SCSS per evitare background sul logo immagine mantenendo il fallback grafico sull'icona it-pa.v1.2.3-beta (05/06/2026 - Sessione odierna): Aperta nuova card di tracciamento versione con allineamento metadata su
templateDetails.xml (versione 1.2.3-beta, data June 05, 2026) e predisposizione delle prossime implementazioni operative.v1.2.2-beta (03-04/06/2026 - Fallback layout + ADR perimetro Theme/Preset Switcher): Consolidata la strategia di fallback Gantry in assenza di
custom/ con uniformazione base/runtime e policy permanente (.github/docs/02_governance/05_layout_fallback_policy.md), quindi formalizzata la decisione di fase sulla rivalutazione preset colore con blocco delle modifiche strutturali immediate e trigger tecnici di revisione in .github/docs/02_governance/03_theme_switcher_scope_decision.md.v1.2.1-beta (01/06/2026 - i18n About admin + particelle + hardening layout Gantry): Avviata la nuova iterazione
1.2.x, completata la migrazione della descrizione About admin e consolidato il lavoro sulle particelle (logo/login/ricerca/icone-link/copyright/preset-switcher) con i18n, fallback logo allineati, fix regressione label, compattazione documentale YAML e uniformazione hover/transition tra login, ricerca e icone-link. Completata inoltre la blindatura dei layout di distribuzione Gantry (default/error/offline) con allineamento degli outline installabili e riduzione della dipendenza da custom/config.
v1.1.12-beta (28/05/2026 - Card ponte 1.1.x -> 1.2.x): Chiusura formale del ciclo 1.1.x con riallineamento documentale. Confermato che le implementazioni tecniche delle versioni 1.1.9/1.1.10/1.1.11 restano valide: la perdita ha riguardato esclusivamente il tracciamento versioning/metadata su templateDetails.xml e gantry/theme.yaml. Avviata transizione operativa al ramo 1.2.x.v1.1.11-beta (21/05/2026 - Chiusura sessione giornaliera): Completata normalizzazione tipografica cross-file: rimozione duplicati font in
gantry/theme.yaml, uniformita preset in gantry/presets.yaml (body/menu a 1rem) e allineamento blueprint admin in blueprints/styles/fonts.yaml con selezione guidata dei soli font canonici.v1.1.10-beta (21/05/2026 - Sessione odierna): Consolidata la sessione semantica su menu/atom con analisi ON/OFF, hardening policy footer-aware in
bootstrapitalia-semantic-audit.html.twig, semplificazione UI del blueprint atom (enabled + alert operativo), allineamento documentale e promozione del documento tecnico in .github/semantic-audit-compliance.md.v1.1.9-beta (20/05/2026 - In progress): Verifica font caricati e ottimizzazione asset runtime completate con esito conforme sul criterio C.SC.1.1 (nessun font errato rilevato dal validatore). Formalizzazione criterio C.SC.1.1 nel changelog operativo. Aggiornamento del documento
.github/joomla_override_conventions.md con lezioni apprese dall'audit override e inventario mod_breadcrumbs. Refactor breadcrumb con separazione reale tra layer layout e layer override Joomla, nuovo file scss/bootstrapitalia-joomla/_bi-breadcrumbs.scss con header standard e import dedicato nella chain Joomla. Rimane in pianificazione il solo blocco data-element.v1.1.8-beta (19/05/2026): Avvio nuova iterazione operativa con aggiornamento metadata autore nei file contesto, introduzione licenza GPLv2 + update server in
templateDetails.xml e creazione del documento .github/DISTRIBUTION-STRATEGY.md. Allineamento chirurgico di 7 override com_users a Joomla 5/6 (fallback legend, guard description, renderControlFields). Audit 21 file override + standardizzazione header uniformi. Rimozione 3 file identici a core.v1.1.7-beta (13/05/2026): Versione non avviata a livello operativo; registrata esclusivamente per allineamento metadata/versioning su
templateDetails.xml e gantry/theme.yaml.v1.1.6-beta (06-11/05/2026): Iterazione chiusa su ottimizzazione footer/breadcrumb con introduzione particella dati istituto, i18n dedicata, hardening CSS runtime e rivisitazione non funzionale dell'override del modulo breadcrumbs Joomla.
v1.1.5-beta (06/05/2026): Promozione metadata versione/data su
templateDetails.xml e gantry/theme.yaml, consolidamento pianificazione tecnica su footer/menu/install/about e verifiche concatenate per i prossimi task.v1.1.4-beta (12-13/03/2026): Completamento operativo e hardening post-rilascio: allineamento colori/token runtime, fix definitivo finder (outline/focus/box-shadow), estensione normalizzazione sezioni
_bi-* e particles, coerenza release/changelog confermata.v1.1.3-beta (03/03/2026: Sessione di consolidamento operativo: Task 2 chiuso, Task 4 verificato come completato (sincronizzazione file/versioni) e checklist di chiusura release confermata.
v1.1.2-beta (24-25/02/2026): Sessione strutturata in 2 blocchi: 24/02 predisposizione operativa e 25/02 aggiornamento completo Task 2 (ottimizzazioni `com_finder` + particles), con fix dinamici bottoni/colore, allineamento finder-modale, aggiornamento versione particella e verifica sync/import chain.
v1.1.1-beta (23/02/2026): Ripresa milestone su attività non completate nella versione precedente. Confermata base tecnica di v1.1.0-beta (hero + i18n), con focus operativo su Task 2-4 rimasti aperti e preparazione sprint della prossima settimana.
v1.1.0-beta (17-18/02/2026): Task 1 completato in 2 fasi - Fase 1 (17/02): Hero section Bootstrap Italia per install templates (5 iterazioni: rimozione RocketTheme, fix contrasto light/dark, migrazione hero inline CSS, fix hover bottoni, no CDN conflicts). Fase 2 (18/02): Internazionalizzazione completa (5 costanti lingua it-IT/en-GB), bug fix critico hero non visualizzata (soluzione: caricamento lingua PHP + passaggio variabili), fix contrasto bottoni dark mode (!important), cleanup costanti obsolete. Task 2-4 pending
v1.0.22+ (16/02/2026 - Post-16): Pulizia dead code SCSS - eliminazione 62 righe duplicazioni (spacing vars, media mixins, breakpoint selectors), commento 316 righe codice potenziale (effect mixins, dimension vars, file interi _nav/_section-styles), verifica compilazione SCSS, strategia ibrida YAGNI + beta phase
v1.0.22-beta (16/02/2026): Sincronizzazione core Hydrogen (author Tiger12), risoluzione conflitto WarningField, pulizia templateDetails.xml, fix classe installer, rimozione cartella fields/, documentazione redirect Gantry, nuovo documento HYDROGEN_SYNC e update struttura template. Consolidamento metadata C3 Foundation layer (8 file configuration), allineamento metadata Utility layer (6 file mixins), eliminazione @version duplication (DRY principle), riorganizzazione bootstrapitalia.scss per sezioni logiche (Core/Layout/Content/Particles), cleanup particle-overrides orfano, clarificazione bootstrapitalia-joomla.scss import dependency
v1.0.21-beta (13/02/2026): Realizzazione report architetturale (architetture_report.md)
v1.0.20-beta (11/02/2026): com_users profile button contrast fix (text visibility), colori dinamici CSS custom properties, coerenza lift effects (-2px + shadow-md), completamento modernizzazione com_users (11 file totali). Preset Switcher v1.0.3, fix mapping system messages, custom properties sezioni template, sincronizzazione preset frontend. Override com_finder ottimizzato (form, risultati, sorting) + SCSS centralizzato _bi-finder.scss
v1.0.19-beta (10/02/2026): Override com_users (login, registration, reset, remind), SCSS centralizzato _bi-user.scss, system messages _bi-systemmessages.scss, colori dinamici CSS custom properties, pulizia _core.scss
v1.0.18-beta (09/02/2026): Ristrutturazione instruction.md, cleanup completo particelle (sample/logo rimossi), consolidamento architettura 3-livelli, documentazione distribuzione template senza custom/
v1.0.17-beta (06/02/2026): Ripresa post-regressione v1.0.15/16, consolidamento standardizzazione SCSS, correzione Typography-Fonts coherence, gestione versioni e file legacy
v1.0.16-beta (06/02/2026): ⚠️ ANNULLATA - Regressioni e perdite dati critiche
v1.0.15-beta (05/02/2026): ⚠️ ANNULLATA - Regressioni e perdite dati critiche
v1.0.14-beta (30/01/2026): Fix offcanvas toggle e stacking context, centralizzazione z-index, breakpoints normalizzati (bp-mobile-small), refactor SCSS menu/offcanvas, cleanup import legacy
v1.0.13-beta (29/01/2026): Effetti hover icone, campi configurazione estesi (css.class, extra), internazionalizzazione completa, audit particelle, upgrade Bootstrap Italia 2.17.2, CDN v1.0.3, Icons v1.0.2, Logo v1.0.4, Login v1.0.5, Ricerca v1.0.5, Icone Link v1.0.7, Preset Switcher v1.0.2
v1.0.12-beta (28/01/2026): CSS Custom Properties, standardizzazione colori presets/blueprints, nomenclatura costanti i18n unificata, Logo v1.0.3, Icone Link v1.0.6, Modale Ricerca v1.0.4, Modale Login v1.0.4
v1.0.11-beta (27/01/2026): Preset Switcher v1.0.1, configurazione dinamica temi colore
v1.0.10-beta (31/12/2025): Preset Switcher v1.0.0, Icone Link v1.0.5, Modale Ricerca v1.0.3, Modale Login v1.0.3, Logo v1.0.2
v1.0.9-beta (30/12/2025): Particles Modale Ricerca e Modale Login implementate
v1.0.8-beta (28/12/2025): Atom Icons v1.0.1, Atom Fixed Section v1.0.1, integrazione SVG sprites
v1.0.7-beta (27/12/2025): Atom CDN v1.0.2, Preset Switcher particle iniziale
v1.0.6-beta (26/12/2025): Particle Icone Link e Logo, SCSS Custom Properties preparazione
v1.0.5-beta (25/12/2025): Configurazione presets colori aggiornata
v1.0.4-beta (24/12/2025): Font custom Bootstrap Italia integrato
v1.0.3-beta (23/12/2025): Layout base beta, outlines Gantry
v1.0.2-beta (22/12/2025): File lingua (it-IT, en-GB) setup beta
v1.0.1-beta (21/12/2025): Struttura beta iniziale
v1.0.0-beta (20/12/2025): Prima release beta, transizione da alpha
Sessione v1.2.4-beta - Ottimizzazione Particella Logo Headerv1.2.4-beta
09/06/2026
- Rimozione fallback brand fisso: in
particles/bootstrapitalia-logo.html.twigeliminato il fallback automatico suTPL_BOOTSTRAPITALIA_PARTICLE_LOGO_BRAND_NAMEquandoline2(Nome della PA) non e valorizzato. - Render condizionale testi: il blocco
it-brand-textviene ora mostrato solo se almeno uno traline1,line2,line3contiene un valore. - Responsive allineato: il campo
Tipo di PAe stato allineato aNome della cittacon nascondimento su breakpoint tramited-none d-md-block. - Ottimizzazione resa logo immagine: in
scss/bootstrapitalia/_bootstrapitalia-logo.scssimpostatobackground: transparentsul selettoreimgper evitare interferenze visive sui loghi caricati. - Fallback icona preservato: il background contestuale resta attivo sull'icona
it-paper mantenere leggibilita e coerenza del fallback grafico. - Nota blueprint aggiornata: in
particles/bootstrapitalia-logo.yamlallineata la descrizione al nuovo comportamento (campi vuoti = nessun testo brand mostrato).
Sessione v1.2.3-beta - Sessione odiernav1.2.3-beta
05/06/2026
- Aprire la nuova iterazione: inizializzare la card
v1.2.3-betacome riferimento unico della sessione odierna. - Consolidare il tracciamento: mantenere allineati changelog, metadata e decisioni operative su baseline/fallback layout.
- Card versione creata: inserita in testa al changelog beta con identificatore
v1.2.3-betae data odierna. - Metadata allineati: confermata coerenza in
templateDetails.xmlcon versione1.2.3-betaecreationDateimpostata aJune 05, 2026. - Policy fallback layout rifinita: aggiornato il documento di governance con criterio tecnico piu verificabile su installazione pulita senza
custom/, includendo semantica formale di rendering coerente e completo. - Criterio di accettazione finale esplicitato: la policy e rispettata solo se gli outline previsti vengono renderizzati correttamente in ambiente pulito, senza stato runtime preesistente.
- Semantica inheritance allineata: confermato che non e vietata in assoluto, ma non deve introdurre dipendenze non rappresentate nella baseline distribuita.
- Checklist tecnica estesa: aggiunto controllo su
Assignmentse copertura degli outline previsti, distinguendo il fallback di assegnazionedefaultdal fallback di pacchetto. - Decisione operativa sulla baseline default: confermato approccio conservativo a struttura semplice/posizionale in
layouts/default.yaml, evitando il trapianto diretto di istanze particle runtime da outline specifici (es.13) per non introdurre dipendenze ambientali.
Sessione v1.2.2-beta - Uniformazione Fallback Layout + ADR Perimetro Theme/Preset Switcherv1.2.2-beta
03-04/06/2026
- Source of truth distribuzione: i file
layouts/*.yamlsono confermati come baseline canonica del pacchetto, utilizzata quandocustom/non e presente. - Regola di uniformazione: quando un layout runtime diventa standard approvato, la stessa struttura va consolidata nel corrispondente file in
layouts/. - Pagine di servizio hardenizzate: confermato approccio esplicito su
_errore_offlineper evitare dipendenze da inheritance runtime. - Freeze implementativo di fase: nessuna modifica strutturale immediata su architettura temi, logica preset, mapping colore-significato e comportamento dello switcher.
- Separazione semantica: chiarita la distinzione tra ruolo attuale dello switcher (demo UI cromatica) e futura possibile evoluzione verso selettore semantico di dominio.
- Rivalutazione guidata: introdotti trigger tecnici di revisione per avviare il refactor solo con prerequisiti soddisfatti (layout validati, documentazione allineata, piano di migrazione, finestra test regressione).
- Uniformazione layout base/runtime: riallineati i layout sorgente con le configurazioni operative correnti su
layouts/default.yaml,layouts/_error.yamlelayouts/_offline.yaml. - Error layout completo: mantenute le sezioni operative approvate (
top,header,navigation,main,last,footer,copyright,to-top,offcanvas) su base e runtime. - Documentazione permanente fallback: creato il documento di governance
.github/docs/02_governance/05_layout_fallback_policy.mdcon stato decisionale, motivazione, modalita applicativa e checklist minima. - Execution flow aggiornato: inclusa la policy fallback nel percorso di consultazione in
.github/docs/01_core/03_documentation_execution_flow.mde nel mapping strutturale in.github/docs/01_core/02_structure.md. - Nuovo ADR di governance: creato e consolidato
.github/docs/02_governance/03_theme_switcher_scope_decision.md. - Riorganizzazione logica del documento: struttura ADR normalizzata in sezioni coerenti (sintesi, contesto/obiettivo, stato attuale vs direzione futura, decisione, razionale, opzioni, vincoli, trigger, impatto).
- Eliminazione ridondanze: unificati contenuti sovrapposti e resa esplicita la motivazione del non intervento tecnico in questa fase.
- Contesto di rivalutazione esplicitato: inserite nel documento le mappature preset correnti, la nuova direzione a 5 entita e l'obiettivo analitico (coerenza, conflitti, impatti, refactor).
- Refined ADR recepito: adottata versione editoriale ottimizzata con linguaggio ADR standard, tabella comparativa stato attuale vs direzione futura e sezione vincoli/trigger resa piu leggibile.
- Allineamento changelog beta: aggiornata la card esistente con tracciamento puntuale delle attivita odierne, mantenendo coerenza tra riepilogo iniziale e dettaglio della sessione.
custom/ deve restare coerente con layouts/*.yaml e ogni implementazione su temi/preset resta subordinata ai trigger di revisione definiti nell'ADR.
Sessione v1.2.1-beta - Apertura Iterazione Operativav1.2.1-beta
01/06/2026
- Aprire la nuova iterazione: inizializzare la card
v1.2.1-betacome riferimento unico della sessione corrente. - Preparare il tracciamento operativo: predisporre sezione implementazioni e verifiche da valorizzare nel corso della sessione.
- Card versione creata: inserita in testa al changelog beta con data odierna e identificatore allineato.
- About admin localizzato tramite costanti: aggiornato
admin/templates/pages/about/about.html.twigper usare chiavi tradotte (|trans/|trans|raw) al posto dei testi inline; contenuto servito dalanguage/it-IT/it-IT.tpl_bootstrapitalia.inielanguage/en-GB/en-GB.tpl_bootstrapitalia.ini. - Particelle localizzate e hardcoded ridotti: aggiornati
particles/bootstrapitalia-logo.html.twig,particles/bootstrapitalia-modale-login.html.twigeparticles/bootstrapitalia-modale-ricerca.html.twigsostituendo i default testuali con chiavi|trans. - Allineamento dizionari lingua: estese le chiavi in
language/it-IT/it-IT.tpl_bootstrapitalia.inielanguage/en-GB/en-GB.tpl_bootstrapitalia.ini(fallback logo/login/search, not configured icone-link, alias coerenteTPL_BOOTSTRAPITALIA_PARTICLE_MENU_INFOin EN). - Ottimizzazione finale logo: mantenuto il modello senza campo
Testo, fallback centrale suTPL_BOOTSTRAPITALIA_PARTICLE_LOGO_BRAND_NAMEe comportamento ripristinato dopo verifica regressione (evitata duplicazione forzata del label su title/alt). - Nota comportamento logo riallineata: aggiornata in
particles/bootstrapitalia-logo.yamlper esplicitare la logica reale (campi opzionali, visualizzazione della sola riga centrale conBootstrap .Italiaquando i campi sono vuoti). - Compattazione descrizioni particelle YAML: semplificati i blocchi
info-contentinparticles/bootstrapitalia-copyright-istituto.yaml,particles/bootstrapitalia-icone-link.yaml,particles/bootstrapitalia-modale-login.yaml,particles/bootstrapitalia-modale-ricerca.yamleparticles/bootstrapitalia-preset-switcher.yaml. - Fix hover icona modale ricerca: in
scss/bootstrapitalia/_bootstrapitalia-modale-ricerca.scssriallineato lo stacking del trigger ricerca al comportamento della login (layer::beforedietro l'icona, icona in primo piano) per evitare la scomparsa dell'icona al passaggio mouse. - Uniformazione transizioni hover tra particelle: aggiornati
scss/bootstrapitalia/_bootstrapitalia-modale-ricerca.scssescss/bootstrapitalia/_bootstrapitalia-icone-link.scssper usare timing coerente con login (0.2s ease-in-outsu color/fill/background) e comportamento di ingrandimento del cerchio hover allineato. - Allineamento layout Offline lato progetto: in
custom/config/_offline/layout.yamlconsolidato l'assetto di servizio con logo centrale del progetto, rimozione componenti non essenziali (ricerca/link utili), mantenimento del blocco principale offline (messaggio + autenticazione), footer/copyright coerenti. - Blindatura Offline lato distribuzione: aggiornato
layouts/_offline.yamlsostituendo il riferimento legacylogo-3431conbootstrapitalia-logo-8845, per garantire coerenza anche senza override runtime incustom/config. - Blindatura Error lato distribuzione: aggiornato
layouts/_error.yamlsostituendo il logo core Gantry conbootstrapitalia-logo-8845e relativa vocecontent, mantenendo la pagina errore allineata all'identita grafica del progetto. - Allineamento layout base Default: portata in
layouts/default.yamlla configurazione operativa consolidata del progetto (header/top/navigation/footer/copyright/particle content) per ridurre la dipendenza dalle sole configurazioni runtime. - Outlines installabili esplicitati: esteso
install/outlines.yamlcon_body_only,_errore_offlinein aggiunta adefault/home, per coerenza tra installazione pulita e layout base distribuiti. - Reset outline runtime per inheritance controllata: svuotati
custom/config/_error/layout.yamlecustom/config/_offline/layout.yaml(layout/content) mantenendo il solo scheletro strutturale, per riattivare una ereditarieta pulita dai layout base del template. - Allineamento finale pagine di servizio: confermata la strategia operativa su Error/Offline con override runtime minimali e definizione della base stabile nei file
layouts/_error.yamlelayouts/_offline.yaml. - Consolidata strategia Gantry source-of-truth: fissata la regola operativa layouts = base distribuibile, custom/config = override runtime istanza, con validazione della priorita di override e fallback sui layout base.
Card ponte v1.1.12-beta - Chiusura ciclo 1.1.x e passaggio a 1.2.xv1.1.12-beta
28/05/2026
1.1.9, 1.1.10 e 1.1.11.
L'anomalia ha impattato esclusivamente il tracciamento su templateDetails.xml e gantry/theme.yaml.
1.1.x e avviata la transizione operativa verso 1.2.x.
- 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.mdcome 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.mdda legacy, mantenendo il solo documento canonico.github/docs/06_analysis/01_gap_analysis_v3.md. - Governance Atom CDN conservativa: mantenuto il default
2.18.1negli atombootstrapitalia-cdnebootstrapitalia-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.xin questo changelog e apertura del prossimo ciclo su1.2.x.
1.2.x.
Sessione v1.1.11-beta - Normalizzazione Tipograficav1.1.11-beta
21/05/2026
1.1.9/1.1.10/1.1.11 non sono andate perse.
I disallineamenti hanno riguardato solo i punti di tracciamento in templateDetails.xml e gantry/presets.yaml.
- Rimuovere residui legacy: censire e valutare la permanenza della chiave
titillium-webquando e gia presente la famiglia canonicaTitillium Web. - Verificare coerenza naming Roboto Mono: controllare riferimenti tra
roboto-monoe forma leggibileRoboto Monoper evitare mismatch nei richiami. - Verificare coerenza naming Lora: controllare riferimenti tra
loraeLorain configurazioni e stili. - Confermare impatti runtime: validare che il naming finale non introduca regressioni su compilazione SCSS, rendering frontend e fallback font.
- Pulizia definitiva chiavi font duplicate: in
gantry/theme.yamlrimossi i blocchi legacy duplicati (titillium-web,roboto-mono,lora) mantenendo solo le famiglie canonicheTitillium Web,Roboto MonoeLora. - Allineamento preset tipografici: in
gantry/presets.yamlconfermata uniformita su tutti i preset conbody-font/heading-font/menu-fontaTitillium Webebody-font-size/menu-font-sizea1rem. - Policy preset documentata: aggiunta nota operativa in testa a
gantry/presets.yamlper fissare i default e i casi d'uso specifici diLoraeRoboto Mono. - Uniformita blueprint admin: aggiornato
blueprints/styles/fonts.yamlcon guidance d'uso e campi convertiti aselect.selectcon opzioni canoniche bloccate (Titillium Web,Lora,Roboto Mono).
Sessione v1.1.10-beta - Consolidamento Semantic Auditv1.1.10-beta
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.twigper 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.twigdei markersearch-modal-button,search-modal-inputesearch-submitper allineamento ai gatherer di ricerca. - Data-element breadcrumb (ieri): tracciato il precedente inserimento del marker
breadcrumbinhtml/mod_breadcrumbs/default.php, mantenuto come base server-side stabile per la conformita semantica. - Semplificazione UI blueprint atom: ridotto
particles/bootstrapitalia-semantic-audit.yamla toggleenabled+ alert operativo per prevenire disattivazioni accidentali durante gli scan. - Allineamento documentale: documento tecnico rinominato/spostato in
.github/semantic-audit-compliance.mde 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
data-element.
- 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.
- Verifica font caricati: ispezione directory
fonts/e riferimenti CSS/SCSS.
- Requisito: headings (
h1-h6) e paragrafi (p) delle pagine in lingua italiana devono usare come defaultTitillium Web,LoraoRoboto Mono, con presenza deidata-elementprevisti dalla documentazione delle app di valutazione. - Verifica automatica: controllo dei selettori e dei
data-elementsu 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.
fonts/ rilevata con 6 famiglie disponibili (lora, roboto_*, titillium_web). Nel workspace corrente non risultano al momento regole font-family leggibili nei sorgenti SCSS/CSS consultati: verifica definitiva da completare nella sessione operativa successiva sull'asset pipeline attiva del template.
https://iam.claudiorosselli.it/ risultano 0 elementi <h>/<p> con font errati e nessun font non conforme individuato.
data-element richiesti dal validatore (service-type, overview, school-submenu, teaching-submenu, news-submenu, services-submenu, custom-submenu, school-locations, search-modal-button, search-modal-input).
school-locations e timeout su selettori ricerca. Decisione operativa: passare al posizionamento server-side dei marker nei template/override reali, mantenendo l'Atom solo come supporto diagnostico/fallback.
- Override locale particella menu Gantry: creato
particles/menu.html.twignel template per svincolare la semantica dal core Gantry (nucleus) e permettere gestione server-side dei markerdata-elementdirettamente nel rendering menu. - Marker menu server-side in Twig: introdotti nel rendering della particella menu i marker
menu,overview,school-locations,service-typee mappatura submenu (school-submenu,services-submenu,news-submenu,teaching-submenu, fallbackcustom-submenu). - Nuovo Atom di supporto semantico: introdotti
particles/bootstrapitalia-semantic-audit.yamleparticles/bootstrapitalia-semantic-audit.html.twigper applicare fallback non distruttivi aidata-elementrichiesti 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-buttoneschool-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.mdcon le lezioni apprese dall'audit del 19/05/2026, introducendo regola operativa obbligatoria (confronto, confronto, confronto), classificazioneTENERE / ELIMINARE, policy header uniformi e checklist di chiusura release. - Inventario override aggiornato: completato l'inventario attivo con
mod_breadcrumbse 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.scssascss/bootstrapitalia-joomla/_bi-breadcrumbs.scss, allineandolo allo standard attivo dei file_bi-*. - Header metadata SCSS breadcrumb: aggiunto header descrittivo coerente con
_bi-finder.scsse_bi-user.scssper identificare chiaramente il file dedicato amod_breadcrumbs. - Import chain Joomla aggiornata: modificato
scss/bootstrapitalia-joomla.scsscon import esplicito dibootstrapitalia-joomla/bi-breadcrumbs, rendendo attivo il layer modulo dedicato nel flusso di compilazione Joomla. - Cleanup legacy breadcrumb: eliminato il precedente file
_breadcrumb.scssdopo migrazione completa delle regole utili e rimozione delle incongruenze legacy rispetto al markup moderno dell'overridehtml/mod_breadcrumbs/default.php.
Chiusura v1.1.8-beta - Audit Override e Standardizzazione Headerv1.1.8-beta
19/05/2026
- 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.
- 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.mdper formalizzare strategia di packaging/distribuzione e governance rilascio.
- Allineamento override
com_usersa 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 titololabel → legend($fieldsetTitle), guard descrizione vuota, aggiuntorenderControlFields().html/com_users/reset/confirm.php: aggiunta guard descrizione (fallback erenderControlFields()già presenti).html/com_users/reset/complete.php: rifinitura guardtrim((string) $fieldset->description).html/com_users/remind/default.php: fallback$fieldsetTitle, aggiuntorenderControlFields().html/com_users/registration/default.php: fallback$fieldsetTitle, guard descrizione, aggiuntorenderControlFields().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: aggiuntorenderControlFields()dopoHTMLHelper::_('form.token'); le differenze strutturali (description dentro il form, classealert 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 (meccanismoincludecondizionale 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.
- 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), dichiarazionidefinedsecurity, 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) escss/bootstrapitalia/_bi-user.scss(header precedente validato) con tutte le classi custom in uso e nessun orfano.
com_finder/search/: 5 file TENERE (default.php, default_sorting.php, default_form.php, default_results.php, default_result.php)com_users/login/: 2 TENERE (default_login.php, default_logout.php) + 1 ELIMINARE (default.php)com_users/profile/: 4 TENERE (edit.php, default_params.php, default_custom.php, default_core.php) + 1 ELIMINARE (default.php)com_users/registration/: 1 TENERE (default.php) + 1 ELIMINARE (complete.php)com_users/remind/: 1 TENERE (default.php)com_users/reset/: 3 TENERE (default.php, confirm.php, complete.php)mod_breadcrumbs/: 1 TENERE (default.php)- Totale riassunto: 18 TENERE + 3 ELIMINARE (rimossi) = 21 file auditati
Nota informativa v1.1.7-beta - Allineamento Versioningv1.1.7-beta
13/05/2026
- 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
- Focus principale: ottimizzazione grafica del footer/menu in coerenza con la documentazione ufficiale Bootstrap Italia, replicando l'approccio già adottato con successo per navigation.
- Perimetro tecnico iniziale: revisione di
scss/bootstrapitalia/_bi-footer.scsse punti correlati di integrazione layout/particles. - Baseline progettuale footer: Bootstrap Italia - Menu di navigazione / Footer.
- Baseline progettuale breadcrumbs: Bootstrap Italia - Menu di navigazione / Breadcrumbs.
- Baseline progettuale header/navigation/menu: Bootstrap Italia - Menu di navigazione / Header.
- indirizzo, codice fiscale/partita IVA, contatti (compresa la posta elettronica certificata);
- Particella copyright istituto: consolidata la particella
bootstrapitalia-copyright-istitutocon aggiornamenti su Twig/SCSS e import nel main entrypointscss/bootstrapitalia.scss. - I18n particella: aggiunte e collegate le chiavi lingua dedicate nei file
language/it-IT/it-IT.tpl_bootstrapitalia.inielanguage/en-GB/en-GB.tpl_bootstrapitalia.ini, con utilizzo|transnel 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.cssper garantire visibilita di separatori e linea centrale anche in assenza di compilazione SCSS completa. - Riordino dipendenze SCSS: riorganizzato
scss/bootstrapitalia.scssin blocchi logici (Foundation, Layout Sections, Shared Components & Helpers, Particles) per migliorare leggibilita e manutenzione. - Ottimizzazione breadcrumb sezione: aggiornato
scss/bootstrapitalia/_bi-breadcrumb.scsscon 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.phpin ottica markup/stile, mantenendo invariata la logica applicativa e aggiungendo la semantica del breadcrumb corrente.
- 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.scssescss/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: -1per stacking context locale dei componenti; aggiunto alias$search-modal-overlay-z-indexpuntante a$z-modal. - Rimozione dead code
scss/mixins/_nav.scss: eliminati il placeholder%dropdown-columne il mixinmain-nav-colors, entrambi privi di utilizzo nel progetto. Mantenutomain-nav-indicatorsancora 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"dascss/configuration/_base.scss. - Fix regressione
$search-modal-overlay-z-index: variabile rimossa da_dimensions.scsssenza essere definita in_z-index.scss; risolto aggiungendo l'alias nel file corretto. - Fix YAML
bootstrapitalia-icone-link.yaml: aggiunto campotextmancante sottoicone.items; default impostato a stringa vuota per delegare la traduzione al fallback|transnel Twig.
- Tokenizzazione footer/copyright/istituto: eliminati 8 hardcoded da
_bi-footer.scss,_bi-copyright.scsse_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 dioutline: 2px / outline-offset: 2pxcon$focus-outline-width/$focus-outline-offset. - Tokenizzazione systemmessages: sostituito
font-size: 1.25remcon nuovo token$systemmessages-close-button-font-sizenel 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 dioutline: 2px/outline-offset: 2pxcon token focus globali; sostituitofont-weight: 400con$font-weight-regular. - Offcanvas-toggle mobile-critical SKIP: mantenuti intatti
width: 44px; height: 44px, margini mobile0.75rem/1rem, etop: 1.7remin offcanvas-right — questi valori sono ottimizzati chirurgicamente per il layout mobile e non vanno modificati. Token$focus-outline-width/$focus-outline-offsetapplicati solo alla sezione non-mobile (:active/:focus/:focus-visible). - Nessun errore compilazione: tutti i 4 file SCSS aggiornati con validazione editor pulita;
$focus-outline-widthe$focus-outline-offsetgià 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 1 - Ottimizzazione footer: completato. Applicata la sequenza operativa proposta su
scss/bootstrapitalia/_bi-copyright.scss,scss/bootstrapitalia/_bi-footer.scssescss/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.scssescss/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.twigcon 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.twige 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.yamle 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.xmlche<file>install.php</file>sia presente e coerente con<scriptfile>install.php</scriptfile>.
- T1 Footer completato con cleanup preliminare su
_bi-copyright.scsse 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.twigcon 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.yamle conferma root cause sulla perdita contenuto file (non legata alla versione CDN). - Ordine esecuzione adottato:
T1 -> T2 -> T3/T4con completamento dell'intero piano 1.1.5 nel perimetro tecnico definito.
- Catena Header/Menu/Navigation: verifica completata con coerenza confermata tra
scss/bootstrapitalia/_bi-header.scss,scss/bootstrapitalia/_bi-menu.scss,scss/bootstrapitalia/_bi-navigation.scssescss/bootstrapitalia/_bi-dropdownanimations.scssrispetto alle particellebootstrapitalia-logo,bootstrapitalia-icone-linkebootstrapitalia-modale-ricerca. - Catena Top/Offcanvas: verifica completata tra
scss/bootstrapitalia/_bi-top.scss,scss/bootstrapitalia/_bi-offcanvas.scssescss/bootstrapitalia/_bi-offcanvas-toggle.scssrispetto alle particellebootstrapitalia-preset-switcherebootstrapitalia-modale-login, con fix applicati su duplicazione_bi-top.scsse ripristino comportamento preset switcher ai breakpoint. - Nota operativa: esclusione delle particelle dal menu mobile offcanvas mantenuta intenzionalmente (nessuna azione richiesta).
- 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.scsse_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-sociale.g-features2-particle). - Step C - Breadcrumb/Copyright: convergenza stilistica e semantica validata tra
_bi-breadcrumb.scsse_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
- Allineamento preset base: aggiornato
scss/configuration/_colors.scssusandogantry/presets.yamlcome source of truth (accent, drawer/top/header/navigation e sezioni light). - Bridge runtime: creato
scss/configuration/_css-tokens.scsscon blocco:rootper esporre token semantici e Bootstrap (--base-*,--primary-*,--bs-primary,--well-background). - Import chain: aggiunto
@import "css-tokens";inscss/configuration/_base.scsscome ultimo import. - Preset switcher runtime: in
particles/bootstrapitalia-preset-switcher.html.twigaggiunti--base-text-colore--base-title-colorin entrambi i blocchi style (head + fallback inline). - Finder semantic fix: in
scss/bootstrapitalia-joomla/_bi-finder.scssil bottone calendario usa ora--primary-colore stato:activesu--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-primaryin focus/focus-visible con override della proprieta finalebox-shadownel contesto componente. - Estensione normalizzazione: allineati file sezione
scss/bootstrapitalia/_bi-*.scsse particles (_bootstrapitalia-modale-login.scss,_bootstrapitalia-logo.scss) ai token dinamici, mantenendo coerenza permodale-ricercaeicone-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_usersehtml/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.scsse_bi-systemmessages.scss, con documentazione centralizzata nei file.github.
- Token runtime presenti: confermata presenza dei nuovi token nei due punti del preset switcher.
- Import attivo: confermato import
css-tokensnella 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.pycon esito OK.
- Valore storico preservato: la chiusura
v1.0.4resta 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
- 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.
btn-outline-primary (data-bs-target="#advancedSearch"). Issue mantenuta aperta e tracciata come carry-over in v1.1.4-beta.
- Manifest integrità: eseguito
python3 .github/scripts/regenerate-md5sums.pycon esito OK. - Output MD5SUMS: file rigenerato con 287 entry; esclusioni applicate:
.github/,changelogs/,custom/,backup_*/,*.log. - Installer lint: eseguito
php -l install.phpcon esitoNo syntax errors detected.
- Allineamento complessivo completato: in data 02/03/2026 è stato completato l'allineamento di tutta la documentazione di progetto (file
.mdin.github/e contenuti changelog). - Struttura repository: aggiornato
.github/structure.mdcon 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
- Ripartenza ordinata: usare baseline
v1.1.1-betagià validata (preflight verde). - Focus operativo: avanzamento Task 2 e Task 3 con verifiche incrementali.
- Controllo rilascio: mantenere allineamento versioni/lint/md5 al termine sessione.
- 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-*-colorper explained/empty e azioni). - Explained query/empty state:
pespanportati a ereditarietà colore dinamica, con fallback semantici centralizzati. - Fix critico bottone outline: su
.btn-outline-primaryfinder 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.scsscon import necessari (configuration/base,mixins/base,bootstrapitalia-joomla/bi-finder). - Validazione: controlli statici su file SCSS aggiornati senza errori; verificata coerenza documentale con
instruction.mde convenzioni override.
Sprint Setup v1.1.1-beta - Ripresa Task Incompletiv1.1.1-beta
23 Febbraio 2026
- 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
- 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)
- Preflight update: snapshot lista file release corrente letta da
MD5SUMSe 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>.logcon summary finale - MD5SUMS standardizzato: introdotto comando ufficiale
python3 .github/scripts/regenerate-md5sums.pyper rigenerazione release-safe del manifest - Policy esclusioni manifest: confermata esclusione di
.github/,changelogs/,custom/, backup e file*.logdal pacchetto distribuito
- Test end-to-end riuscito: cleanup eseguito con output
10 eliminati, 0 protetti, 0 non trovati, 0 errorie 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.mdcon 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.phpriallineato con attribuzione upstream (RocketTheme/Tiger12) + maintainer corrente e copyright custom. - Preflight rilascio ✅: versioni allineate
1.1.1-beta,php -l install.phpOK,MD5SUMSsenza mismatch.
Milestone v1.1.0 - Nuove Funzionalità e Miglioramentiv1.1.0-beta
17 Febbraio 2026
- 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 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 inlineinstall/templates/update.html.twig- Struttura hero con 1 bottoneinstall/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
.g5icon 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
#888888cross-theme
- Iterazione 5 - Migrazione Hero Section:
- 🔄 Decisione: Migrazione da
alert-infowrapper ait-hero-wrapperBootstrap 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 cond-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; }
- 🔄 Decisione: Migrazione da
- Bottoni Hero - Contrasto e Hover:
- btn-light (primario):
- Default:
background: white; color: #0066cc; - Hover:
background: #f0f6ff; color: #004d99; transform: translateY(-2px); box-shadow
- Default:
- 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
- Default:
- Transizioni:
transition: all 0.3s ease(smooth animations) - Effetto lift:
translateY(-2px)+box-shadow: 0 4px 12px rgba(0,0,0,0.15)
- btn-light (primario):
- 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-wrapper 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 templateTPL_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 renderingThemeInstaller->render() - Diagnosi tecnica:
- ❌ Gantry
ThemeInstallernon 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
- ❌ Gantry
- Sintomo: Dopo aggiunta costanti lingua con filtro Twig
- ✅ Soluzione Implementata - Caricamento Lingua Lato PHP:
- File modificato:
install.php(metodoBootstrapItaliaInstallerScript::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);
- Step 1: Caricamento esplicito file lingua
- 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>
- ❌ Rimosso:
- Hardcoding valori critici (v2 refinement):
- ⚠️ Problema riscontrato:
TPL_BOOTSTRAPITALIA_POWERED_BY_AUTHORvisualizzata 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
- ⚠️ Problema riscontrato:
- 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)
- File modificato:
- 🎨 Fix Contrasto Bottoni Dark Mode:
- Problema identificato: Bottone
btn-lightcon 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
#0066ccsempre visibile su sfondo bianco - ✅ Contrasto WCAG AA compliant in light e dark mode
- ✅
!importantforza blu text anche con override tema aggressivi - ✅ Hover effect mantenuto (
background: #f0f6ff; color: #004d99;)
- ✅ Testo blu
- Problema identificato: Bottone
- 🧹 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 attivelanguage/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:
!importantnecessario 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)
- Files modificati totali: 5
- 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
- File PHP:
- Task 3 - Audit Conformità Design System:
- Scope: Verificare file
scss/configuration/escss/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)
- Scope: Verificare file
- 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: ClasseBootstrapItaliaInstallerScriptcon hooks preflight/postflight/update - ✅
MD5SUMS: File manifest esistente (110 righe) con formatofilepath\thashper ogni file template - ✅
templateDetails.xml: Sezione<files>con elenco folder/file ufficiali, versione corrente in<version>
- ✅
- Approccio implementativo suggerito:
- Fase Pre-Update: Nel metodo
preflight('update')leggere MD5SUMS esistente e salvare lista file versione precedente in sessione/cache - Fase Post-Update: Nel metodo
postflight('update')confrontare lista vecchia vs nuovo MD5SUMS + templateDetails.xml <files> - Cleanup Orphan: Eliminare file presenti in lista vecchia ma assenti in nuova versione (escluso whitelist custom/)
- Logging: Registrare operazioni in file log per audit trail e rollback manuale se necessario
- Fase Pre-Update: Nel metodo
- 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.logcon 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 metodipreflight()epostflight()(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.phprighe 1-125: Classe esistente da estendere con metodi cleanup - File
MD5SUMS: Formato esistente filepath + hash MD5 (110 righe template corrente)
Sincronizzazione Core Hydrogen e Risoluzione Conflittiv1.0.22-beta
16 Febbraio 2026
- Strategia: Aggiornamento file base da Hydrogen ultima versione mantenendo metadata personalizzati (author, copyright, versioni)
- File sincronizzati:
component.php- Author: Tiger12 (da RocketTheme)error.php- Author: Tiger12index.php- Author: Tiger12offline.php- Author: Tiger12html/layouts/joomla/system/message.php- Author: Tiger12html/layouts/chromes/gantry.php- Author: Tiger12includes/gantry.php- Author: Tiger12install/templates/update.html.twig- Tiger12 link
- Modifiche applicate: Solo metadata (author name, copyright year, links), NO modifiche funzionali al core logic Hydrogen
- Rationale: Mantenere base Hydrogen aggiornabile facilmente, customizzazioni solo nei layer A2/C3 (vedi architetture_report.md § 5.1)
- Problema: Fatal error "Cannot redeclare class WarningField" quando si clicca "Stili Template" in backend Joomla
- Causa: Conflitto tra
plugins/system/gantry5/fields/warning.php(WarningField) etemplates/bootstrapitalia/fields/warning.php(WarningField duplicato) - Diagnosi comportamento atteso:
- Clic "Stili Template" → Plugin system/gantry5 intercetta
- Redirect automatico a
administrator/index.php?option=com_gantry5&view=configurations/13/layout&theme=bootstrapitalia - Apre Layout Manager di Gantry (non form config generica Joomla)
- Tentativi di fix:
- ❌ Rinominato classe:
WarningField→BootstrapItaliaWarningField(plugin non riconosce più) - ❌ Rimosso
<config>completamente da templateDetails.xml (perso trigger redirect) - ❌ Ripristinato
<config>con field type="bootstrapitalia" (plugin non intercetta)
- ❌ Rinominato classe:
- Soluzione finale:
- ✅ Rimosso
<config>da templateDetails.xml (evita conflitto classe) - ✅ Eliminata cartella
fields/completamente dal template - ✅ Rimosso riferimento
<folder>fields</folder>dalla sezione<files> - ✅ Plugin system/gantry5 gestisce redirect tramite
<group>gantry5</group>e<library>gantry5</library>
- ✅ Rimosso
- ⚠️ Nota configurazione critica: Il redirect funziona SOLO se
system/gantry5plugin ha impostazione "Use Gantry 5 Assignments" = Yes. Se impostato su "No", Joomla carica form generica invece di redirigere a com_gantry5
- File:
install.php(righe 23-27) - Modifica: Rinominata classe installer per coerenza progetto
- Prima:
class G5_HydrogenInstallerScript(generico Hydrogen) - Dopo:
class BootstrapItaliaInstallerScript(specifico template) - Rationale: Nome classe coerente con identità template "Bootstrap .Italia", non riferimento generico Hydrogen
- Directory rimossa:
fields/(conteneva solowarning.php) - Motivo: Eliminazione conflitto classe WarningField con plugin system/gantry5
- Migration path: Template usa field "warning" del plugin Gantry5, non necessita field custom
- Audit trail:
grep -r "fields/" templateDetails.xml # Risultato: 1 match (riga 20) # Azione: Rimosso <folder>fields</folder> dalla sezione <files> - Struttura finale: Template senza cartella
fields/, redirect gestito dal plugin system/gantry5
- Nuovo documento: hydrogen_sync.md con procedura completa di sincronizzazione Hydrogen (file core, metadata, checklist)
- Struttura aggiornata:
.github/structure.mdallineato a file core e rimozionefields/ - Riferimenti incrociati: link a documentazione e regole permanenti per mantenere coerenza con instruction.md
- Layer A1 (Core Hydrogen): File sincronizzati, NO modifiche funzionali (solo metadata)
- Layer A2 (Sezioni bi-*): Nessuna modifica (non toccati dal fix)
- Layer C3 (Configuration): Nessuna modifica (non toccati dal fix)
- Layer Runtime (Gantry): Dipendenza plugin system/gantry5 per redirect, configurazione "Use Gantry 5 Assignments" critica
- templateDetails.xml: Pulizia
<config>e<files>, riferimenti fields/ rimossi
- architetture_report.md § 5.1 - Regole di governance architetturale (core Hydrogen non modificato)
- architetture_report.md § 2.2 - Layer Hydrogen Core (dipendenza del template)
- instruction.md § 1.1 - Scopo e Ambito (template basato su Gantry 5)
Hydrogen originale include
<config addfieldpath="/templates/hydrogen/fields"> con fields/warning.php (classe WarningField) come fallback quando Gantry non è installato. Tuttavia, questo crea un race condition: quando plugins/system/gantry5 è attivo, entrambi i file warning.php (template + plugin) caricano la stessa classe WarningField, causando fatal error "Cannot redeclare class".Soluzioni possibili:
- Rimuovere field dal template (nostra scelta) - Più pulito, ma dipende da plugin configurato correttamente
- Rinominare classe template (es:
HydrogenWarningField) - Mantiene fallback, evita conflitto - Conditional loading - Template carica field solo se plugin non attivo (complesso)
<library>gantry5</library>), quindi il fallback "Install Gantry" non è necessario. Soluzione più semplice e architetturalmente coerente con separazione layer (template non duplica logica plugin).
- Scope: Aggiunta metadata headers standardizzati a tutti 8 file configurazione Foundation Layer per coerenza architetturale
- File aggiornati:
scss/configuration/_base.scss,_colors.scss,_typography.scss,_spacing.scss,_breakpoints.scss,_z-index.scss,_dimensions.scss,_nav.scss - Metadata pattern (già in templateDetails.xml):
/** * @package Gantry 5 Theme - Bootstrap Italia * @author Claudio Rosselli https://iamawebmaster.com * @currentDeveloper Claudio Rosselli * @copyright Copyright (C) 2026 iamawebmaster.com All rights reserved. * @license GNU/GPLv2 and later * * Foundation Layer Configuration - Design Tokens * [Descrizione modulo specifico] * https://italia.github.io/bootstrap-italia/ */ - Descrizioni identificatori: Ogni file ha descrizione breve ("Configuration Base", "AGID Color Palette", "Typography System", etc.
- Benefici: Metadata garantisce tracciabilità codice, crediti archivio, licenza chiara, deprecation management, supporto IDE (hover doc)
- Nota DRY: Rimossi
@versiontag individuali (vedi sezione successiva "Eliminazione @version")
- Scope: Aggiunta metadata headers a 6 file mixins layer per coerenza con configuration layer
- File aggiornati:
scss/mixins/_base.scss,_breakpoints.scss,_effects.scss,_dynamic-states.scss,_nav.scss,_section-styles.scss - Pattern identico a configuration: Stesse 6 @-tag (
@package,@author,@currentDeveloper,@copyright,@license, descrizione layer) - Descrizioni differenziate: "Utility Layer Mixins Base" (orchestrator), "Responsive Breakpoint Mixins", "Transition & Hover Effects", etc.
- Validazione coerenza: File
_base.scss(configuration) = "Foundation Layer Configuration Base"; File_base.scss(mixins) = "Utility Layer Mixins Base" (pattern identico, contesti diversi) - Completamento architetturale: Metadata ora coerente su 14 file (8 configuration + 6 mixins); template pronto per future extensioni
- Problema identificato: Tag
@version 1.0.22-betaduplicato in 9 file (8 configuration + 1 orchestrator) - Impatto manutenzione: Ogni release richiede aggiornamento manuale di 9 file separati → rischio sincronizzazione fallita → versioni inquete
- Soluzione DRY: Single Source of Truth =
templateDetails.xml(riga 3:<version>1.0.22-beta</version>) - File corretti: Rimosso
@versionda:- Configuration:
_base.scss,_colors.scss,_typography.scss,_spacing.scss,_breakpoints.scss,_z-index.scss,_dimensions.scss,_nav.scss - Mixins:
_base.scss
- Configuration:
- Metadata residuo: Conservati
@package,@author,@currentDeveloper,@copyright,@license(invarianti nel tempo) - Regola generale: Metadata immutabile nel codice sorgente (author, copyright, license); versioning dinamico solo in templateDetails.xml
- Beneficio: Eliminati 9 punti di sincronizzazione fragili; manutenzione versione centralizzata; git diffs più puliti
- Problema iniziale: 59 import A2 adapter layer sparsi senza categorizzazione; difficile navigazione file 172 righe
- Soluzione: Raggruppamento import per categorie logiche con commenti descriptivi
- Struttura finale:
- A1 HYDROGEN CORE (read-only Nucleus):
@import "nucleus/theme/base" - A2 CORE COMPONENTS: core, typography, utility, navigation, header, footer, breadcrumb, drawer, offcanvas (21 import)
- A2 LAYOUT SECTIONS: showcase, intro, feature, mainbody, sidebar, aside, bottom, last (14 import)
- A2 CONTENT & PAGE STYLES: forms, tables, variations, error, animations, content-array (6 import)
- A2 CUSTOM PARTICLES: bootstrapitalia-logo, modale-ricerca, modale-login, preset-switcher (4 import)
- A1 BREAKPOINTS (read-only Nucleus):
@import "nucleus/theme/breakpoints/base"
- A1 HYDROGEN CORE (read-only Nucleus):
- Benefici navigazione: Developer capisce immediatamente A1 vs A2; SCHEMA logico=layout fisico file; IDE fold/unfold per sezioni
- Mantenibilità: Aggiungere nuovo file? Clear section dove inserirlo; audit importi per completezza semplice; zero ambiguità ordine loading
- Semantica architetturale: Riflette cleanly layer model (A1=Hydrogen, A2=Bootstrap Italia, C3=Foundation esterna)
- Problema identificato: bootstrapitalia.scss importava
@import "bootstrapitalia/particle-overrides"ma file_particle-overrides.scssera completamente vuoto - Analisi semantica: Cartella particles/ contiene 22 file custom Bootstrap Italia (bootstrapitalia-logo, modale-*, preset-switcher, branding, sample, copyright) — ZERO file override Hydrogen
- Root cause: File creato come placeholder durante setup iniziale, mai completato, mai usato
- Azione intrapresa:
- ✅ Verificato file vuoto (0 byte)
- ✅ Confermato no dipendenze altre (grep search)
- ✅ Rimosso import da bootstrapitalia.scss (linee 155-159)
- ✅ File
_particle-overrides.scsseliminato dalla directory
- Impatto semantico: Rimuove confusione "particles are overrides" — chiarisce "particles are custom creations"
- Completezza: 22 particles custom = layer Runtime indipendente; zero Hydrogen reuse; architettura pulita
- Contesto: bootstrapitalia-joomla.scss (compilazione backend Joomla) ha comment "Load Template Configuration" risultato ambiguo
- Approfondimento architetturale:
_dependencies.scssimportanucleus/theme/base(frontend Hydrogen)bootstrapitalia-joomla.scssNON importa dependencies; importa direttamentenucleus/theme/joomla/base(backend-specific Hydrogen)- Due compilazioni diverse = due nuclei diversi (frontend vs backend rendering)
- bootstrapitalia-joomla.scss necessa C3 Foundation layer (design tokens) INDIPENDENTEMENTE da dependencies
- Fix semantico: Aggiornato comment in bootstrapitalia-joomla.scss:
// C3 FOUNDATION LAYER (Design Tokens) // Required prerequisite for all Joomla-specific styles // § scss/configuration/base - Design tokens (colors, spacing, breakpoints) // Tokens definiti in configuration/ sono usati da tutti i file _bi-*.scss del layer Joomla - Chiarimento necessità: Foundation layer tokens NON sono "duplicate" da dependencies; sono "independent prerequisite" perché compilazione Joomla ha path import diverso
- Architettura definitiva: Due flussi import coerenti ma separati: frontend (@import dependencies→nucleus/theme) vs backend (@import joomla/theme) entrambi usando stessi C3 tokens
Pulizia Dead Code SCSS - Eliminazione Duplicazioni e Codice Non UtilizzatoOperazione Archivio 16/02/2026
16 Febbraio 2026 - Post v1.0.22-beta
- Metodologia: Audit file-by-file per identificare dead code in scaffolding Bootstrap Italia (
bi-*,bootstrapitalia-*file) escludendo core Hydrogen/Nucleus - Scope esclusione: Nucleus-provided mixins/variables (breakpoints, functions) — audit SOLO layer personalization v1.0.22-beta
- Risultato audit:
- ✅ 200+ variabili configuration verificate
- ✅ 40+ smooth-transition() call confermati (usati)
- ✅ 11 focus-shadow-dynamic() call confermati (modali)
- ✅ 9+ breakpoint(mobile-only) call confermati
- ⚠️ 4 breakpoint selectors unused (desktop, large-desktop, xl, small-mobile)
- ⚠️ 6 media mixins duplicated (media-tablet, media-desktop, media-large, media-xl, media-mobile-only, media-tablet-down)
- ⚠️ 4 effect mixins unused (smooth-transition-delayed, hover-scale, hover-scale-smooth, focus-ring)
- ⚠️ 2 mixin files completely unused (131 righe _nav.scss, 150 righe _section-styles.scss)
- Duplicazioni eliminate:
scss/configuration/_core.scss(linee 13-19): 7 variabili spacing ($spacing-xs→$spacing-3xl) — duplicate esatte di_spacing.scssscss/configuration/_breakpoints.scss(linee 29-63): 6 media query mixin — duplicati di funzionalità@mixin breakpoint()inscss/mixins/_breakpoints.scssscss/mixins/_breakpoints.scss: 4 breakpoint selector (@else if blocks) non usati in nessun filebi-*(desktop, large-desktop, xl, small-mobile)
- Righe eliminate: ~62 linee dead code
- Verifiche SCSS: ✅
configuration/_base.scsscompila correttamente; ✅mixins/_base.scsscompila correttamente - Nota di progettazione: Riordinamento import
scss/configuration/_base.scss—_spacing.scssora importata PRIMA di_core.scssperché_core.scssusa$spacing-lgnella variabile forma
- Strategia YAGNI + Beta Phase: Commento per review futura, non eliminazione permanente. Marcato
// UNUSED v1.0.22-beta - Remove after v1.0 stable if still unused - Mixin non utilizzati commentati:
scss/mixins/_effects.scss: 4 mixin commentati —smooth-transition-delayed(),hover-scale(),hover-scale-smooth(),focus-ring()(potenziali per animazioni future, accessibilità)
- Variabili configuration commentate:
scss/configuration/_core.scss: 10 variabili dimension non usate —$grid-min-height,$button-min-height,$input-min-height,$icon-size-sm/md/lg,$code-padding/background/border-radius
- File completamente commentati:
scss/mixins/_nav.scss(131 righe): 2 mixin main-nav-colors() e main-nav-indicators() — 0 riferimenti nei filebi-*. Potenziale se navigazione refactorizzata per supportare tema dinamico
scss/mixins/_section-styles.scss(150 righe): 6 mixin section-base-styles(), section-with-image(), ecc. — 0 riferimenti. Potenziale se sezioni standardizzate per eliminare ripetizione
- Import commentati:
scss/mixins/_base.scss— 2 @import commentati (_nav.scss,_section-styles.scss) per evitare errori SCSS compilation - Righe commentate: ~316 linee
- Test compilazione: ✅
sass scss/configuration/_base.scss— compila senza errori (solo deprecation warnings @import expected) - Test compilazione: ✅
sass scss/mixins/_base.scss— compila senza errori - Risultato: Struttura SCSS intatta e funzionale post-cleanup
- Linee eliminate: ~62 (duplicazioni confermabili)
- Linee commentate: ~316 (codice potenziale, reviw future)
- Totale inarchiviato: ~378 righe
- File modificati: 8 (configuration/_core.scss, configuration/_breakpoints.scss, configuration/_base.scss, mixins/_breakpoints.scss, mixins/_effects.scss, mixins/_nav.scss, mixins/_section-styles.scss, mixins/_base.scss)
- Impatto semantico: Codebase più pulita, intenti architetturali chiari, manutenzione semplificata senza ambiguità
- Timeline: Post v1.0 stable release (quando progetto entra produzione)
- Decisione binaria: Se codice commentato ancora non usato → eliminare definitivamente. Se usato → scommentare e integrare
- Tracciamento: Aggiungere note nelle issue di v1.0.1-stable per review archivio dead code
Report Architetturale - Realizzazione Documentov1.0.21-beta
13 Febbraio 2026
- Scope: Realizzazione del file
.github/architetture_report.mdcon analisi architetturale e struttura a layer - Nota: Release allineata al tracciamento giornaliero (regola 1:1 data-versione)
- Gantry: Reinstallato Gantry 5 (ultima versione) per diagnosi errore PHP WarningField
Preset Switcher Dinamico e Allineamento Sezioniv1.0.20-beta
11 Febbraio 2026
- Mapping sezione system messages:
systemmessages→system-messagesper allineare ID DOM (#g-system-messages) inparticles/bootstrapitalia-preset-switcher.html.twig - Fallback inline: stesso mapping applicato nel blocco CSS fallback per garantire coerenza anche senza output in
<head> - Generazione CSS corretta: Regole dinamiche per
background-color,text-color,heading-colorapplicate alle sezioni Gantry viabody.preset-* - Preset frontend: Applicazione classe
preset-*e sincronizzazionedata-gantry-presetcon priorita'localStorage> backend > fallback
- File aggiornati:
scss/bootstrapitalia/_bi-top.scss,scss/bootstrapitalia/_bi-header.scss,scss/bootstrapitalia/_bi-navigation.scss,scss/bootstrapitalia/_bi-menu.scss,scss/bootstrapitalia/_bi-offcanvas.scss,scss/bootstrapitalia/_bi-offcanvas-toggle.scss,scss/bootstrapitalia/_bi-footer.scss,scss/bootstrapitalia/_bi-copyright.scss - Naming convention: Rinominati
_footer.scss→_bi-footer.scsse_copyright.scss→_bi-copyright.scssper coerenza con pattern_bi-[section].scsssu tutte le sezioni template (instruction.md A2 layer) - Top menu links: conversione a
var(--top-text-color, $top-text-color)per link e item top - Footer/Copyright: adozione di
var(--footer-*)evar(--copyright-*)per background, testo e heading - Cleanup footer/copyright: rimosso codice commentato legacy e blocchi vuoti senza output
- Pattern adottato:
var(--section-property, $scss-fallback)perbackground-color,text-color,heading-color,toggle-color - Beneficio: cambio preset immediato su tutte le sezioni template senza rebuild statico
- Analisi Decision Tree: Applicazione sistematica della regola "Lo uso 3+ volte?" per distinguere hardcoded accettabile da variabili centralizzate
- File _bi-offcanvas-toggle.scss: conversione
width/height: 44px→$touch-target-min, margini hardcoded →$spacing-*, fallback colore#ffffff→$offcanvas-toggle-color - File _bi-top.scss: conversione
min-height: 60px(2 occorrenze) →$section-min-height, padding menu item hardcoded →$padding-menu-item-vertical/horizontal,box-shadow: 0 6px 6px rgba(0,0,0,0.05)→$shadow-dropdown - Social link
padding: 0.625rem→$spacing-md width: 3rem, height: 3rem→$spacing-xxxlline-height: 1.5rem→$spacing-xl- File _bi-header.scss:
- Navbar padding
0.5rem 1rem→$spacing-sm $spacing-lg - Nav-link padding
0.5rem 1rem→$spacing-sm $spacing-lg - Breadcrumb padding
0.5rem 1rem→$spacing-sm $spacing-lg border-radius: 0.25rem→$radius-sm
- Navbar padding
- File _bi-menu.scss:
- Menu toplevel padding
1rem→$spacing-lg - Menu mobile padding
0.5rem(2 breakpoint) →$spacing-sm
- Menu toplevel padding
- File _bi-navigation.scss:
padding-top/bottom: 0px→$spacing-none
- File _bi-offcanvas.scss:
- Toggle width/height
44px→$touch-target-min(2 conditional blocks) - Toggle positioning
0.5rem, 0.75rem→$spacing-sm, $spacing-md
- Toggle width/height
- Benefici consolidamento: Manutenzione centralizzata, coerenza visiva, WCAG compliance, Guide future Decision Tree
- Preset Switcher: badge versione aggiornato a
v1.0.3inparticles/bootstrapitalia-preset-switcher.yaml - View implementate: Login (default_login.php), Registration (default.php), Reset (default.php, confirm.php), Remind (default.php)
- Alert pattern consistente: Tutti i form usano
.alert.alert-infoper description/legend con struttura uniforme - Container .well: Classe custom ispirata a .bd-example di Bootstrap Italia (padding, border, shadow, background grigio)
- Alert escape visivo: Gli alert fuoriescono dal container .well con margini negativi e border-radius 0
- Classi minime: Solo Bootstrap Italia native nel PHP (
.form-control,.btn-primary,.card) - README.md: Documentazione centralizzata in
html/com_users/README.md(v2.0.0) - File creato:
scss/bootstrapitalia-joomla/_bi-user.scss(v2.1.0) - Contenuto: Login Module (mod_login legacy + Joomla 5+), Well Container, tutte le pagine componente (login, logout, registration, reset, remind, profile)
- Effetti custom: Lift button hover (
transform: translateY(-2px)), icon animation (transform: translateX(2px)) - Selettori multipli:
.com-users-login__form, .com-users-registration__form, .com-users-reset__formper evitare duplicazione - Import: Aggiunto in
scss/bootstrapitalia-joomla.scss - File rinominato:
_systemmessages.scss→_bi-systemmessages.scss(v2.0.0) - Spostato in:
scss/bootstrapitalia/(sezione template, non override Joomla) - Ottimizzazione visibilità: Pseudo-classi
:emptye:has(> :empty)per nascondere quando vuoto - Supporto Joomla 5+: Custom element
<joomla-alert>con close button, alert-heading, wrapper - Import aggiornato:
scss/bootstrapitalia.scss(non bootstrapitalia-joomla.scss) - File ottimizzato:
scss/bootstrapitalia-joomla/_core.scss - Rimosse: Tutte le regole com_users (Login Module, Login/Logout pages, Registration, Reset, Remind, Profile, .well styling)
- Spostate in:
_bi-user.scss(centralizzazione completa) - Contenuto attuale: Solo Joomla Menu Module, Bootstrap adjustments, generic form inputs, Gantry framework base
- Beneficio: Eliminati duplicati, zero conflitti border/styling, manutenzione semplificata
- Pattern applicato:
var(--custom-property, $scss-fallback)a tutti i file SCSS - File aggiornati:
_bi-user.scss,_bi-systemmessages.scss,_variations.scss,_core.scss - Variabili convertite:
- Colori:
--accent-color-1,--base-title-color,--base-border-color,--well-background,--systemmessages-*,--white - Background:
--systemmessages-background-color/image/repeat/size/attachment - Border:
--base-border-colorin .box1, .box2, .title-border, .well
- Colori:
- Beneficio: Tematizzazione runtime tramite CSS custom properties, fallback SCSS sicuro, compatibilità browser legacy
- File configuration:
configuration/_core.scss,configuration/_colors.scss - Variabili aggiunte:
- Spacing:
$spacing-xs(0.25rem),$spacing-sm(0.5rem),$spacing-md(1rem),$spacing-lg(1.5rem),$spacing-xl(2rem) - Transitions:
$transition-fast(0.15s),$transition-standard(0.3s),$transition-slow(0.5s) - Opacity:
$opacity-disabled,$opacity-secondary(0.6),$opacity-hover,$opacity-full(1) - Typography:
$font-weight-semibold(600),$line-height-base(1.6) - Shadows:
$shadow-smbox-shadow - Colors:
$well-background(hsl(0, 0%, 96%))
- Spacing:
- Refactoring completo: 40+ sostituzioni hardcoded → variabili in
_bi-user.scsse_bi-systemmessages.scss - Problema identificato: Testo "Modifica profilo" nel button di edit profilo stesso colore del background (primary blue #0066cc)
- Causa root: Regola CSS
body.preset-base #g-mainbody a { color: #0066cc !important; }sovrescriveva tutti i link nel mainbody - Soluzione implementata: Selettore CSS con massima specificità
body #g-mainbody .profile > ul.btn-toolbar li.btn-group > a.btn-primarycon!important - Colori dinamici: Migrazione da hardcoded
#fffa CSS custom propertyvar(--bs-white, #fff)per supportare theme switching - Copertura pseudo-classi: Applicato
color: var(--bs-white, #fff) !importanta:link,:visited,:hover,:active,:focus - Selettore universale: Uso di
* { color: var(--bs-white, #fff) !important; }per forzare colore bianco su tutti gli elementi figli (span icone + testo diretto) - Coerenza effetti: Button profile button toolbar utilizza gli stessi effetti di hover/active della sezione centralizzata:
- Hover:
transform: translateY(-2px)conbox-shadow: $shadow-md - Active:
transform: translateY(0)conbox-shadow: $shadow-sm - Transitions:
$transition-standardper smoothness
- Hover:
- File modificato:
scss/bootstrapitalia-joomla/_bi-user.scssv3.0.0 - Validazione: Confermato che no exist cartelle
methods/,captive/con override PHP (solo logica backend 2FA/validazione) - Status totale: ✅ COMPLETATO - Tutte le 8 view com_users + 3 subtemplate profile
- File modernizzati:
- login/: default_login.php, default_logout.php (2)
- registration/: default.php (1)
- reset/: default.php, confirm.php (2)
- remind/: default.php (1)
- profile/: default.php, edit.php, default_core.php, default_params.php, default_custom.php (5)
- Optimizzazioni applicate: Rimozione
form-horizontal,control-group,controls,dl-horizontal| Adozione.well| Alert per descrizioni | CSS custom properties | Lift button effects coerenti - Documentazione aggiornata:
html/com_users/README.mdv3.0.0 con section "Aggiornamenti 11 Febbraio 2026" - File aggiornato:
.github/JOOMLA_OVERRIDE_CONVENTIONS.md(v1.0.0) - Contenuto: Convenzioni standardizzate override Joomla, naming convention SCSS (
_bi-[nome].scss), procedura creazione, testing requirements - Esempi pratici: Login override completo, registration template, quick start script
- Regole fondamentali: Mantenere funzionalità Joomla core, styling tramite CSS/SCSS, struttura logica form
- Override PHP: 5 file com_users (login, registration, reset x2, remind) con classi Bootstrap Italia native
- SCSS Component: 1 file centralizzato (
_bi-user.scssv2.1.0) per tutte le view com_users - SCSS Section: 1 file system messages (
_bi-systemmessages.scssv2.0.0) ottimizzato - Configuration: Sistema variabili completo (spacing, transitions, opacity, typography, colors)
- CSS Custom Properties: Pattern
var(--prop, $fallback)applicato globalmente - Documentazione: README com_users + JOOMLA_OVERRIDE_CONVENTIONS.md aggiornati
- Custom ridondanti eliminati: 14 file in
custom/config/default/particles/(content, menu, module, social, spacer, totop, etc.) - Sample Hydrogen eliminata:
particles/sample.yaml+particles/sample.html.twig(demo non production) - Logo Nucleus defaults rimosso:
config/default/particles/logo.yaml(template usabootstrapitalia-logo) - Architettura consolidata: 3 livelli Gantry (particles/ + config/default/ + custom/config/)
- Distribuzione: template deve escludere
custom/(auto-generata da Gantry al primo salvataggio outline) - Decisione: Template basato su
Gantry 5(non Cassiopea) - Motivo: Configurabilita' nativa (particles/layout), SCSS scalabile (A1/A2/C3), minori override Joomla
- Trade-off accettato: Dipendenza da framework in cambio di produttivita' e controllo architetturale
- Regola permanente: Vedi
.github/instruction.md§ 2.3 - File Modificato:
.github/instruction.md - Problema Risolto: Bloat documentale, confusione tra regole permanenti e task completati, impossibilità tracking cronologico progressi
- Soluzione Architettonica: Separazione totale tra:
- instruction.md: SOLO linee guida permanenti e principi architetturali immutabili
- changelog: SOLO progressi, modifiche effettuate, verifiche, status task
- Prima di aggiungere qualsiasi contenuto chiedersi:
- È una regola/principio che vale sempre? →
instruction.md - È un'azione/verifica completata o in corso? →
changelog
- È una regola/principio che vale sempre? →
- Benefici Previsti:
- Prevenzione bloat file instruction (difficile leggibilità)
- Eliminazione confusione "cosa fare sempre" vs "cosa è stato fatto"
- Tracciabilità cronologica progressi mantenuta
- Sezione 1 - Governance del Documento: Meta-documentazione, scopo, ambito, regole di gestione
- Sezione 2 - Contesto del Progetto: Obiettivi, stack tecnologico, compatibilità Joomla 5.x
- Sezione 3 - Regole Generali di Sviluppo: Principi fondamentali (colori dinamici, mixins, decisioni architetturali, pattern A1/A2/C3)
- Sezione 4 - Criticità e Lezioni Apprese: Avvertenze importanti, problemi risolti, workflow sicuri
- Sezione 5 - Design System e Standard: Linee guida Designers Italia, AGID, accessibilità, responsività
- Sezione 6 - Sistema SCSS e Architettura: Struttura file, import order, dependencies, mapping
- Sezione 7 - Governance Operativa (A1/A2/C3): Priorità architetturali, atoms, particles, convenzioni
- Sezione 8 - Pattern di Sviluppo e Guida Operativa: Variabili, mixins, conversioni, checklist
- Posizionamento: All'inizio del file instruction.md, prima della Governance
- Scopo: Dichiarare esplicitamente la separazione tra:
- 📘
instruction.md: Standard codifica, regole architetturali, workflow, pattern, criticità - 📝
changelog: Modifiche effettuate, risultati verifiche, status task, matrici migrazione, tracking versioni
- 📘
- Contenuto Chiave: Regola Fondamentale con decision tree per categorizzazione contenuti
- Ridondanze Rimosse: Eliminati riferimenti duplicati a regole sparse nel documento
- Terminologia Standardizzata: Uso consistente termini architetturali (A1/A2/C3, atoms, particles, configuration layer)
- Indice Ottimizzato: Riorganizzazione logica sezioni per navigazione intuitiva
- Manutenibilità: Principio "write once, reference forever" per regole architetturali
- Link Quick Reference:
STRUCTURE.md: Inventario directory/file completochangelogs/version/stable/: Cronologia versioni stabilichangelogs/version/beta/: Cronologia versioni beta (questo file)changelogs/version/alpha/: Prima release sperimentale
- Risorse Esterne:
- Bootstrap Italia Docs e CDN (jsdelivr.com)
- Design UI Kit e Design System Italia
- Manuale Operativo Design (docs.italia.it)
- Linee Guida AGID
- Joomla Docs e Gantry 5 Docs
- Nuove Regole Architetturali: Aggiunte SOLO quando pattern ricorrenti o criticità identificate
- Progressi Operativi: Documentati ESCLUSIVAMENTE in changelog (MAI in instruction.md)
- Versioning Semantico: instruction.md segue semantic versioning solo per modifiche architetturali maggiori
- Modifiche Minori: Correzioni typo, chiarimenti non modificano versione documento
.github/instruction.md: Ristrutturazione completa applicatachangelogs/version/beta/changelog.html: Entry v1.0.18-beta aggiunta (questo file)changelogs/index.html: Aggiornato riferimento v1.0.18-beta7 Regole Documentazione Changelog (sezione 8 instruction.md)✅Fix Z-Index Header Mobile✅Documentazione Eccezioni Hardcoded (sezione 7.2)✅Regola 1:1 Gestione Versioni e Date (una data = una versione)✅Fix Regressione Header Mobile (margin-left -65px → 0)✅Audit Architetturale SCSS (centralizzazione variabili)✅Normalizzazione 29 Pattern Legacy (26 transition mixin + 3 media query)✅Conformità 100% Raggiunta (z-index, media query, variabili)✅- Sezione 8: Standardizzazione SCSS - Guida Operativa Completa (11 sottosezioni)
- Variabili spacing centralizzate (_spacing.scss)
- Mixin effects, breakpoints, section-styles documentati
- Checklist conversione hardcoded → variabili
- Esempio completo conversione (toggle, switcher, login)
- Strategie anti-regressione (git workflow, pre-commit hook, VALIDATION.md)
- Roadmap standardizzazione per sezioni rimanenti
- Sezione "Gestione Versioni e File Legacy" (ora in instruction.md § 8.11)
- ⏳ Procedura Permanente: Procedure rollback sicuro ora centralizzata in instruction.md § 8.11
- Creata in questa versione: Root cause analysis file cancellati vs riferimenti orfani identificato (v1.0.17)
- Sintesi: 6 step obbligatori pre-rollback: identificare file creati, grep riferimenti, documentare dipendenze, decidere strategia (backport/refactor/fallback), checkout, validare compilazione
- Rationale: Evitare "Undefined mixin" e errori compilazione SCSS post-rollback
- Correzzione Typography-Fonts Coherence
- Font da "Lato"/"Cormorant SC" → "Titillium Web" (conforme Bootstrap Italia)
- Monospace: "Menlo" → "Roboto Mono" (presente in /fonts/)
- Serif: Georgia → "Lora" (presente in /fonts/, 20 file)
- Fallback stack aggiornato con system fonts (-apple-system, Segoe UI)
- Eliminazione riferimento orfano @include breakpoint() in _bi-top.scss
Creazione mixin centralizzati (_dynamic-states.scss con focus-shadow-dynamic)✅Normalizzazione Spacing (variabile $spacing-none centralizzata in 9 istanze)✅Normalizzazione Overlay Color ($overlay-dark centralizzata per dropdown)✅Verifica File Particelle (colori hardcoded → var(), z-index, breakpoints)✅Verifica File Sezione bi-* (colori statici → CSS Custom Properties dinamici)✅Fix Sintassi SCSS (4 errori: selettore SCSS, CSS var(), proprietà orfane, test classes)✅- □ Normalizzazione Transizioni complete (26 pattern legacy → @include smooth-transition())
- □ Normalizzazione Media Query (3 pattern legacy → @include breakpoint())
scss/configuration/_typography.scss- Correzione font families (Titillium Web, Roboto Mono, Lora)scss/configuration/_spacing.scss- Creazione file (nuovo, v1.0.17)scss/configuration/_base.scss- Aggiunto import _spacing.scss.github/instruction.md- Sezioni 8 (Standardizzazione) e 7.3 (Gestione Versioni)scss/bootstrapitalia/_bi-top.scss- Correzione riferimento orfano @include breakpoint()- File sezione (bi-*) utilizzavano variabili SCSS statiche:
$accent-color-1,$top-link-color,$accent-color-2 - Particelle utilizzavano correttamente CSS Custom Properties:
var(--primary-color, ...) - Risultato: offcanvas, menu, header non cambiavano colore quando utente selezionava diverso preset dal switcher
- Menu items, link hover, button background rimanevano hardcoded ai valori di default
- Mixin Centralizzato:
@mixin focus-shadow-dynamic($opacity)creato inscss/mixins/_dynamic-states.scss(27 righe)- Applica focus shadow dinamico:
0 0 0 3px var(--accent-light, rgba(...)) - Parametro opacità configurabile (default 0.1)
- Applicato 11 volte in file particelle (modale-login, modale-ricerca)
- Applica focus shadow dinamico:
- Variabili Configurazione:
$spacing-none: 0 !default;in_spacing.scss- centralizza zero-spacing (9 istanze standardizzate)$overlay-dark: rgba(0, 0, 0, 0.8) !default;in_colors.scss- overlay dropdown menu
- CSS Custom Properties nei File bi-*:
- _bi-offcanvas.scss:
background: var(--primary-color, $accent-color-2);per button (2 posizioni) - _bi-top.scss: Links e hover trasformati in
var(--primary-color)evar(--accent-light) - _bi-menu.scss: Menu items attivi/hover usano
var(--accent-light)fallback$accent-color-1 - _bi-header.scss: Navbar brand e links hover con
var(--accent-light)
- _bi-offcanvas.scss:
- _bi-menu.scss (Riga 30): Selettore SCSS incompleto
menu-parent-indicator {→&.menu-parent-indicator { - _bi-offcanvas.scss (Riga 4): CSS Custom Property syntax error
color: --primary-color, ...→color: var(--primary-color, ...) - _bi-navigation.scss: Rimossi 4 test color classes (
.menu-color-red,.menu-color-purple,.menu-color-green,.menu-color-blue) - ~20 righe - _bootstrapitalia-modale-ricerca.scss (Righe 283-284): Proprietà CSS orfane spostate in selettore valido
#modal-search ~ .modal-backdrop { opacity: 0.3; } - File Creati: 1 (
scss/mixins/_dynamic-states.scss) - File Modificati: 8 (
_bi-offcanvas.scss,_bi-top.scss,_bi-menu.scss,_bi-header.scss,_bi-navigation.scss,_bootstrapitalia-modale-ricerca.scss,_colors.scss,_spacing.scss) - Variabili Aggiunte: 2 (
$spacing-none,$overlay-dark) - Errori Sintassi Corretti: 4 (selettore SCSS, CSS var(), proprietà orfane, test classes)
- Colori Dinamicizzati: 15+ istanze convertite da variabili statiche a CSS Custom Properties
- ✅ Menu items cambiano colore al cambio preset tramite switcher
- ✅ Offcanvas button risponde ai preset dinamici
- ✅ Header navbar navbar items seguono tema selezionato
- ✅ Focus states mantengono feedback visivo dinamico
- ✅ Fade backdrop modale ricerca correttamente implementato
- ✅ Nessuna regressione in compilazione SCSS
- Verifica File SCSS Particelle:
- Controllare allineamento con mixins centralizzati (smooth-transition, breakpoint, section-base-styles)
- Verificare utilizzo variabili colore da
_colors.scss(eliminare hex hardcoded) - Validare conformità z-index (tolleranza zero - solo variabili
$z-*) - Sostituire media query hardcoded con
@include breakpoint()
- Controllo Documentazione:
- Aggiornare changelog per v1.0.14 non documentate (se presenti)
- Verificare coerenza
.github/instruction.mdcon modifiche effettuate - Validare applicazione 7 regole documentazione changelog
- Pulizia e Coerenza SCSS:
- Preparare aggiustamenti file SCSS per garantire coerenza architetturale
- Verificare import chain in tutti file principali (configuration → mixins → sections)
- Validare naming convention file (bi-* per sezioni, bootstrapitalia-* per particelle)
- Gestione Modifiche Stesso Giorno:
- Accumulare ulteriori modifiche 05/02/2026 in questa versione 1.0.15-beta
- NON creare nuove sezioni changelog con stessa data (regola 1 data = 1 versione)
- Aggiornare sezioni esistenti mantenendo cronologia modifiche
- Categoria: Fix Regressioni Critiche
- File Modificati:
scss/bootstrapitalia/_bi-header.scss(191 righe totali) - Data Fix: 06/02/2026
- Problema Rilevato: Logo header non visibile su viewport mobile/tablet (< 992px)
- File:
scss/bootstrapitalia/_bi-header.scss- Riga 187 - Causa Tecnica: Margine negativo eccessivo
margin-left: -65px;sposta il logo fuori viewport su dispositivi mobile/tablet - Viewport Affettati:
- ✅ Desktop (≥ 992px): OK - regola non applicata
- ❌ Tablet (768px - 991px): Logo parzialmente/totalmente fuori schermo
- ❌ Mobile (< 768px): Logo completamente fuori schermo
- Analisi DOM: Elemento presente nel DOM ma spostato oltre il margine sinistro del viewport
- Conflitti Z-Index: Nessuno - problema di posizionamento, non di stacking context
- Fix Implementato: Rimozione margine negativo critico
- Modifica Codice:
// ❌ PRIMA (Regressione) #g-header .g-logo-image { @media (max-width: ($bp-desktop - 1px)) { margin-left: -65px; // Sposta logo fuori viewport padding-top: 4px; } } // ✅ DOPO (Fix) #g-header .g-logo-image { @media (max-width: ($bp-desktop - 1px)) { margin-left: 0; // Logo allineato correttamente padding-top: 4px; } } - Rationale Fix: Eliminazione spostamento orizzontale garantisce visibilità logo su tutti i viewport mobile/tablet
- Pattern Conforme: Utilizzo variabile breakpoint
$bp-desktopda_breakpoints.scss(accettabile secondo sezione 7.1 instruction.md) - Desktop (≥ 992px): ✅ Logo visibile, nessuna regressione introdotta
- Tablet (768px - 991px): ✅ Fix verificato - logo ora visibile e allineato
- Mobile (< 768px): ✅ Fix verificato - logo completamente visibile
- Sticky Header: ✅ Comportamento scroll preservato (transizioni smooth intatte)
- Z-Index Hierarchy: ✅
$z-header: 1000conforme alla scala centralizzata - Transition Hardcoded: Rilevate 20+ occorrenze di
transition:diretto nei file modali - File Interessati:
_bootstrapitalia-preset-switcher.scss- 3 occorrenze (righe 32, 84, 135)_bootstrapitalia-modale-login.scss- 11 occorrenze_bootstrapitalia-modale-ricerca.scss- 10 occorrenze
- Decisione Architetturale: Pattern legacy accettabili - file non modificati in v1.0.15
- Rationale:
- Pattern funzionanti e testati in produzione
- Refactoring richiede testing esteso componenti modali complessi
- Rischio/beneficio: priorità a fix regressioni critiche
- Refactoring posticipato a sessione futura dedicata ottimizzazioni
- Import Chain: ✅ Verificata - C3 (configuration) → A1 (mixins) → A2 (sections)
- Naming Convention: ✅ Conforme -
bi-*sezioni,bootstrapitalia-*particelle - Z-Index Compliance: ✅ 100% - 0 hardcoded violations (solo variabili
$z-*) - Mixin Usage: ✅ 9
@include smooth-transition()in _bi-header.scss - Breakpoint Pattern: ⚠️ 2
@media (max-width: ($bp-variable))- pattern legacy accettabile (usa variabili) - Nuove Violazioni: ✅ 0 introdotte dal fix
- Conformità Instruction: ✅ Rispetta sezioni 7.1 (Eccezioni Hardcoded) e 8.3 (Gestione Versioni)
- Categoria: Refactoring Architetturale SCSS
- Obiettivo: Eliminazione violazioni transition hardcoded e media query inconsistenti
- File Modificati (5 totali):
scss/bootstrapitalia/_bootstrapitalia-preset-switcher.scss(187 righe) - 3 patchesscss/bootstrapitalia/_bootstrapitalia-modale-login.scss(662 righe) - 12 patchesscss/bootstrapitalia/_bootstrapitalia-modale-ricerca.scss(441 righe) - 10 patchesscss/bootstrapitalia/_bi-header.scss(191 righe) - 2 patchesscss/bootstrapitalia/_bi-offcanvas-toggle.scss(65 righe) - 2 patches
- Patches Totali Applicati: 29 normalizzazioni (26 transition + 3 media query)
- Data Refactoring: 06/02/2026 (pomeriggio - stessa giornata del fix header)
- Patch 1 (Riga 32): Icon SVG fill/opacity animation
// ❌ PRIMA .preset-icon svg { transition: fill 0.2s ease-in-out, opacity 0.2s ease-in-out; } // ✅ DOPO .preset-icon svg { @include transition(fill 0.2s ease-in-out, opacity 0.2s ease-in-out); } - Patch 2 (Riga 84): Dropdown margin-left animation
// ❌ PRIMA .preset-dropdown { transition: margin-left 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); } // ✅ DOPO .preset-dropdown { @include transition(margin-left 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)); } - Patch 3 (Riga 135): Item hover background/color
// ❌ PRIMA .preset-item { transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out; } // ✅ DOPO .preset-item { @include transition(background-color 0.15s ease-in-out, color 0.15s ease-in-out); } - Linee Modificate: 232, 241, 249, 264, 275, 383, 398, 433, 469, 534, 591 (e mobile responsive)
- Pattern Normalizzati:
- Button transform + background animations (multi-property)
- Icon SVG fill transitions
- Text color hover states
- Emergency fallback transitions
- Input label floating animations
- Password toggle button interactions
- Submit button all-properties transition
- Link hover border-bottom effects
- Mobile label animations (responsive)
- Esempio Critico - Patch 10 (Riga 398): Login provider buttons
// ❌ PRIMA (Violazione residua post-audit) .social-login-button { transition: all 0.2s ease-in-out; } // ✅ DOPO .social-login-button { @include smooth-transition(all, 0.2s); } - Linee Modificate: 67, 78, 154, 187, 217, 232, 262, 296, 344, 362
- Pattern Normalizzati:
- Search link text color hovers
- Emergency fallback background transitions
- Modal content scale animation (
cubic-beziercustom) - Close button opacity transitions
- Form label floating effects
- Input focus state transitions
- Submit button hover interactions
- Backdrop opacity fade (0.3s ease-in-out)
- Mobile input/button responsive transitions
- Esempio Tecnico - Patch 17 (Riga 154): Modal scale animation
// ❌ PRIMA .modal-content { transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); } // ✅ DOPO .modal-content { @include transition(all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)); } - Header (Righe 99, 186): Conversione media query a breakpoint() mixin
// ❌ PRIMA (Pattern legacy - variabili ma non ottimale) @media (max-width: ($bp-tablet - 1px)) { .navbar { ... } } @media (max-width: ($bp-desktop - 1px)) { .logo { ... } } // ✅ DOPO (Pattern centralizzato) @include breakpoint(mobile-only) { .navbar { ... } } @include breakpoint(mobile-only) { .logo { ... } } - Offcanvas-Toggle (Righe 26, 36): Normalizzazione breakpoint patterns
// ❌ PRIMA @media (min-width: $bp-desktop) { ... } @media (max-width: ($bp-tablet - 1px)) { ... } // ✅ DOPO @include breakpoint(desktop-up) { ... } @include breakpoint(mobile-only) { ... } - Rationale Pattern: Centralizzazione logica responsive in
_breakpoints.scss - Benefici: Modifiche breakpoint propagano automaticamente, nomenclatura semantica, testing semplificato
- transition($values...): Multi-property transitions con parametri variadic
- Usa per:
transform 0.3s, background 0.3socubic-beziercustom - File:
scss/mixins/_effects.scss - Compatibilità: Gantry 5 nucleus framework
- Applicazioni: 15/29 patches (preset-switcher multi-property, modale-login complex, modale-ricerca scale)
- Usa per:
- smooth-transition($property, $duration, $easing): Single property con defaults
- Usa per:
color 0.2s,opacity 0.3s, simple animations - Defaults:
$properties: all, $duration: 0.3s, $easing: ease-in-out - Applicazioni: 11/29 patches (modale-login simple hovers, modale-ricerca labels)
- Usa per:
- breakpoint($selector): Responsive pattern centralizzato
- Selettori:
mobile-only,tablet-up,desktop-up,tablet-range - File:
scss/configuration/_breakpoints.scss - Applicazioni: 3/29 patches (header navbar/logo, offcanvas-toggle positioning)
- Selettori:
- Grep Search 1 - Transition Hardcoded:
Pattern: transition:\s*[^;]+; File Scope: scss/bootstrapitalia/*.scss Risultato: ✅ 0 matches (PRIMA: 24 matches) - Grep Search 2 - Media Query Legacy:
Pattern: @media\s+\((?:min|max)-width:\s*(?:\(?\$bp-|\d+px) File Scope: scss/bootstrapitalia/*.scss Risultato: ✅ 12 matches rimanenti (conformi - usano variabili C3) - Analisi 12 Media Query Residue:
- File:
_bootstrapitalia-icone-link.scss(3),_bootstrapitalia-logo.scss(3),_bootstrapitalia-modale-login.scss(4),_bootstrapitalia-modale-ricerca.scss(2) - Pattern:
@media (max-width: $bp-variable)- **approvato** secondo instruction.md 7.1 - Range Complessi:
@media (max-width: $bp-large) and (min-width: ($bp-tablet + 1px))- non convertibile a breakpoint() simple - Decisione: Conformi - refactoring opzionale in sessione futura
- File:
- Grep Search 3 - Mixin Usage Verification:
Pattern: @include (transition|smooth-transition|breakpoint) File Scope: scss/bootstrapitalia/*.scss Risultato: ✅ 50+ matches (tutte le normalizzazioni attive) - Conformità Pre-Refactoring (Post-Header-Fix): 98%
- Z-Index: ✅ 100% (0 violations)
- Transition: ❌ 20+ hardcoded
- Media Query: ⚠️ 14 legacy patterns (2 non-ottimali + 12 accettabili)
- Conformità Post-Refactoring (100% Raggiunto): 100%
- Z-Index: ✅ 100% (unchanged)
- Transition: ✅ 100% (26 normalizzazioni applicate - 0 violations)
- Media Query: ✅ 100% (3 conversioni a breakpoint() - 12 conformi residue)
- Efficienza Refactoring:
- Tool Calls: 6 (multi_replace_string_in_file batch operations)
- Vs. Operazioni Individuali: 29 (efficienza 4.8x)
- Success Rate: 100% (29/29 patches applicati correttamente)
- Token Budget: Ottimizzato tramite batching strategico
- Instruction.md - Sezione 7.1: Eccezioni Hardcoded Approvate (righe 344-414)
- Instruction.md - Sezione 8.3: Gestione Versioni e Date (righe 510+)
- Regola 1:1 Versioning: Modifiche 06/02/2026 consolidate in v1.0.16-beta (unica versione per data)
- Configuration Layer:
scss/configuration/_breakpoints.scss(5 variabili $bp-*) - Z-Index Scale:
scss/configuration/_z-index.scss(10 variabili $z-* - gerarchia 1000-1920) - ⏳ Regole Permanenti: Standard changelog formalizzato in instruction.md § 1.5 (versione/data, sintesi, dettaglio tecnico, completeness, riferimenti, pulizia, chiarezza)
- Introdotte in v1.0.15-beta (05/02/2026) - applicate retroattivamente a v1.0.14
- Espansa documentazione v1.0.14-beta applicando le nuove 7 regole
- Aggiunti dettagli tecnici completi per Typography Configuration (Layer C3): file path, line count (26 righe), consolidamento font families, standardizzazione weights, sistema scalabile heading sizes
- Documentato Ampliamento Mixin Layer (A1): _effects.scss (227 righe) con 8 mixin, _section-styles.scss (142 righe) con 3 mixin, eliminazione 50+ duplicazioni pattern
- Specificati file sezioni rinominati (Layer A2): _bi-header.scss (193 righe), _bi-menu.scss (119 righe), _bi-navigation.scss (79 righe), _bi-offcanvas.scss (259 righe), _bi-offcanvas-toggle.scss (63 righe), _bi-top.scss (269 righe)
- Documentato aggiornamento dependencies: import chain bourbon → configuration → nucleus → mixins (19 righe)
- Aggiunti valori esatti per normalizzazione: breakpoints ($bp-tablet: 768px, $bp-desktop: 992px), z-index ($z-header: 1000, $z-offcanvas-toggle: 1035)
- Dettagliato fix offcanvas toggle: posizionamento assoluto, configurabilità left/right, WCAG touch target 44x44px
- Applicato formato consistente con tag
<code>per file paths e variabili SCSS - Utilizzato
<strong>per evidenziare layer architetturali (A1, A2, C3) e modifiche critiche - Suddiviso modifiche in sezioni semantiche chiare (Typography, Mixin, Sezioni, Dependencies, Normalizzazione, Cleanup, Verifiche)
- Inclusi line count per evidenziare ampiezza modifiche e facilitare code review
- Aggiornato badge v1.0.15-beta a
bg-success text-white- milestone importante (documentazione completa) - Mantenuto badge v1.0.14-beta come
bg-primary text-white- versione completata standard - File:
scss/bootstrapitalia/_bi-header.scss(riga 3) - Problema rilevato:
z-index: 2hardcoded rompeva gerarchia stacking context - Impatto: Header (z: 2) finiva sotto navigation (z: 1002) e top (z: 1003)
- Soluzione: Rimosso valore hardcoded, aggiunto parametro
$z-headera mixinsection-base-styles() - Chiamata mixin aggiornata:
@include section-base-styles($header-background-color, $header-text-color, $header-heading-color, $z-header) - Z-index ora correttamente gestito da
_z-index.scss($z-header: 1000) - File:
.github/instruction.md- Nuova sezione 7.1 "Eccezioni Hardcoded Approvate" - Eccezione 1 - Utility Classes Menu Colors: Documentate classi
.menu-color-red,.menu-color-purple,.menu-color-green,.menu-color-bluein_bi-navigation.scss - Giustificazione: Colori intenzionali per markup Joomla, modifiche rare, pattern utility-first comune
- Eccezione 2 - Media Query con Variabili: Pattern
@media (max-width: ($bp-tablet - 1px))approvato come accettabile - Motivo: Usa variabile breakpoint da configuration, non rompe centralizzazione
- Preferenza: Per nuovo codice preferire
@include breakpoint(mobile-only) - Eccezione 3 - Z-Index: Confermato ZERO tolleranza per
z-indexhardcoded, nessuna eccezione ammessa - Definita procedura verifica trimestrale per pattern sospetti
- Grep pattern:
z-index: \d+,@media.*\d+px,color: #[0-9a-f]{6} - Processo valutazione: refactor vs documentare nuova eccezione
- Obbligo aggiornamento sezione instruction.md per nuove eccezioni approvate
- Strategia ibrida pragmatica: Fix bug critici (z-index) + documentazione eccezioni accettabili (utility colors, media query)
- Prioritizzazione fix architetturali con impatto stacking context
- Documentazione trasparente decisioni pragmatiche vs purismo architetturale
- Bilanciamento manutenibilità vs overhead gestione variabili per utility classes
- File:
.github/instruction.md- Nuova sezione 8.3 "Gestione Versioni e Date" - Regola fondamentale: Una data = una sola versione (relazione 1:1)
- Divieto: Non creare più sezioni changelog con stessa data
- Workflow: Più interventi stesso giorno → accumulare in versione esistente, non creare nuova
- Benefici: Chiarezza cronologica, no duplicazioni, timeline lineare senza ambiguità
- Applicazione pratica: v1.0.15-beta (05/02/2026) consolida tutte modifiche giornata (documentazione + fix z-index + regole versioning)
- Obiettivo: Verifica integrità architettura SCSS (Layer A1/A2/C3), eliminazione pattern hardcoded, risoluzione dipendenze mixin
- Metodologia: Grep sistematico pattern sospetti, cross-reference @include vs @mixin, validazione import chain
- Risultato: 8 fix z-index, 1 fix media query, 2 mixin critici creati, 5 file modificati
- File:
scss/bootstrapitalia/_bootstrapitalia-preset-switcher.scss - Violazione 1-3: Righe 61, 69, 79 -
z-index: 1020sostituito con$z-preset-switcher(1031) - Violazione 4: Riga 91 -
z-index: 1015sostituito con($z-offcanvas-overlay + 5)(calcolo dinamico) - Violazione 5: Riga 104 -
z-index: 9999(valore eccessivo) sostituito con$z-popover(1920) - Rationale: Dropdown menu deve stare sopra modal backdrop ma sotto tooltip/popover layer
- Impatto: Corretto stacking context, preset switcher ora integrato in gerarchia z-index globale
- File:
scss/bootstrapitalia/_bi-offcanvas.scss(riga 213) - Context: Media query IE11 (
@media all and (-ms-high-contrast: none)) - Fix:
z-index: 1010→$z-offcanvas-overlay - Motivo: Anche polyfill legacy devono rispettare gerarchia centralizzata
- File:
scss/bootstrapitalia/_bootstrapitalia-icone-link.scss(riga 44) - Fix: Rimosso
z-index: 1non necessario da link social icon - Giustificazione: Pseudoelemento
::beforegià haz-index: -1, sufficiente per corretto stacking - Filosofia: Eliminare z-index ridondanti per ridurre complessità stacking context
- File:
scss/bootstrapitalia/_bootstrapitalia-preset-switcher.scss(riga 67) - Fix:
@media (min-width: 769px)→@include breakpoint(tablet-up) - Motivo: Valore 769px non allineato con
$bp-tablet: 768pxda configuration - Beneficio: Centralizzazione breakpoint, modifiche future in un solo punto
- File creato:
scss/mixins/_breakpoints.scss(79 righe) - Problema rilevato: 10+ chiamate
@include breakpoint()senza definizione mixin nel workspace - File chiamanti: _bi-top.scss (3 chiamate), _bi-offcanvas.scss (1 chiamata), _bi-menu.scss (4 chiamate), _bootstrapitalia-preset-switcher.scss (2 chiamate)
- Root cause: Mixin probabilmente fornito da Gantry framework a runtime, mancante per verifica statica
- Soluzione: Implementato mixin completo con 8 selectors responsive
- Selectors supportati:
mobile-only,tablet-range,desktop,large-desktop,xl,tablet-up,desktop-up,small-mobile - Mapping variabili: Usa
$bp-mobile-small(480px),$bp-tablet(768px),$bp-desktop(992px),$bp-large(1024px),$bp-xl(1200px) - Fallback: Selector custom assume
min-widthcon valore passato - File modificato:
scss/mixins/_effects.scss(aggiunto alla fine) - Problema rilevato:
@include transition(opacity 0.3s ease-out 0s, z-index 0s)in_bi-offcanvas.scsssenza definizione - Differenza da smooth-transition: Accetta valori variadic (comma-separated) per transizioni multiple con timing individuali
- Implementazione:
@mixin transition($values...) { transition: $values; } - Uso caso: Overlay con fade opacity (0.3s) e instant z-index change (0s)
- File modificato:
scss/mixins/_base.scss - Aggiunta:
@import "breakpoints";come prima import - Ordine finale: breakpoints → nav → effects → section-styles
- Rationale: Breakpoints usati da tutti altri mixin, deve essere caricato per primo
- Z-Index Audit: 0 violazioni hardcoded restanti (grep completo workspace)
- Media Query Audit: 17 occorrenze pattern
@media (min/max-width: $bp-*)conforme (usa variabili configuration) - Mixin Dependencies: 100% risolte - tutti
@includehanno@mixincorrispondente - Import Chain: Verificato ordine corretto configuration → mixins → sections
- Pattern count: 50+ chiamate smooth-transition verificate, 10+ breakpoint verificate, 2+ section-base-styles verificate
- Categoria 1 - rgba() Shadows/Overlays: 6 occorrenze (pattern comune accettabile per opacità variabili)
- Categoria 2 - Print Media (#fff/#000): 6 occorrenze (eccezioni legittime per stampa bianco/nero)
- Categoria 3 - Utility Colors: 4 occorrenze _bi-navigation.scss (eccezioni approvate instruction.md 7.1)
- Categoria 4 - Misc: 3 occorrenze (fallback in var(), border utilities)
- Decisione: Non fixare - costo refactoring > beneficio manutenibilità per questi casi
- Offcanvas Toggle: posizionamento assoluto corretto, z-index ($z-offcanvas-toggle: 1035) allineato, fascia sopra #g-top rimossa
- Allineamento toggle a sinistra ripristinato, target touch WCAG 44x44px mantenuto
- Posizionamento configurabile (left/right) tramite variabile $offcanvas-toggle-position
- File:
scss/configuration/_typography.scss(26 righe) - Consolidamento font families con fallback coerenti (Lato, Cormorant SC, Menlo, Georgia)
- Standardizzazione font weights centralizzati: $font-weight-regular (400), $font-weight-medium (500), $font-weight-bold (700)
- Aggiunta variabili $font-family-mono e $font-family-serif per uso tipografico esteso
- Sistema scalabile heading sizes basato su $fontsizes-body-font-size (h1: 3x, h2: 2.3x, h3: 2x, h4: 1.5x, h5: 1x, h6: 0.9x)
- File:
scss/mixins/_effects.scss(227 righe) - mixin per transition, hover, focus, border-radius - Mixin aggiunti: smooth-transition(), smooth-transition-delayed(), hover-scale(), hover-scale-smooth(), focus-outline(), focus-ring(), border-radius-standard(), border-radius-circle()
- File:
scss/mixins/_section-styles.scss(142 righe) - mixin per sezioni layout - Mixin aggiunti: section-base-styles(), section-with-image(), section-link-styles()
- Eliminazione 50+ duplicazioni pattern tra particelle e sezioni
- Prefisso bi-* applicato: _bi-header.scss (193 righe), _bi-menu.scss (119 righe), _bi-navigation.scss (79 righe), _bi-offcanvas.scss (259 righe), _bi-offcanvas-toggle.scss (63 righe), _bi-top.scss (269 righe)
- Implementazione mixin centralizzati (@include section-base-styles, @include smooth-transition, @include breakpoint)
- Uso variabili da configuration: $bp-tablet, $bp-desktop, $z-header, $z-navigation, $z-top, $z-offcanvas-overlay
- Import chain aggiornata in
bootstrapitalia.scss(146 righe) con ordine corretto: dependencies → nucleus → core → typography → sezioni bi-* → particles → breakpoints - File:
scss/_dependencies.scss(19 righe) - Import chain ottimizzata: bourbon → configuration/base → nucleus → mixins/base
- Ordine garantisce ereditarietà corretta variabili (configuration → mixins → sezioni)
- Breakpoints: $bp-mobile-small (480px), $bp-tablet (768px), $bp-desktop (992px), $bp-large (1024px), $bp-xl (1200px)
- Mixin media query centralizzati: @mixin media-tablet, @mixin media-desktop
- Z-Index Scale: $z-base (1000), $z-header (1000), $z-navigation (1002), $z-top (1003), $z-offcanvas-overlay (1010), $z-offcanvas-toggle (1035), $z-modal (1900)
- Rimozione file SCSS di particelle non appartenenti al progetto template (file legacy esterni)
- File senza prefisso bi-* esclusi dalla import chain
- Controlli stacking context e responsive senza regressioni
- Test offcanvas overlay (z-index 1010) sotto toggle (z-index 1035)
- Verifica media query normalizzate su tutti breakpoints
instruction.mdaggiornato con architettura A1/A2/C3 (9 sezioni, 485 righe)- Standard nomenclatura bi-* prefix per file sezioni documentato
- Regole hardcoding prohibition (NO @media hardcoded, NO z-index hardcoded, NO colori hardcoded)
- Mappature complete layer: A1 (mixins), A2 (sezioni bi-*), C3 (configuration)
- Particelle aggiornate: Login (v1.0.5), Ricerca (v1.0.5), Icone & Link (v1.0.7)
- Particelle aggiornate: Login (v1.0.5), Ricerca (v1.0.5), Logo (v1.0.4), Preset Switcher (v1.0.2)
- Particelle aggiornate: Login (v1.0.5), Ricerca (v1.0.5), Logo (v1.0.4), Icone & Link (v1.0.7)
- Nota: Issue preset-switcher mobile positioning rimasta aperta (rinviata)
- Aggiornata libreria Bootstrap Italia da 2.16.1 a 2.17.2
- Atom CDN aggiornato a v1.0.3 con nuova versione di default 2.17.2
- Atom Icons aggiornato a v1.0.2 con fallback a 2.17.2
- Corretta URL CSS di default in Icons:
bootstrap-italia-icons.min.css(erabootstrap-italia.min.css) - Implementata ereditarietà versione: Icons legge da CDN via
gantry.config.get('particles.bootstrapitalia-cdn.version') - Pattern singleton SVG unificato tra atoms e particelle:
window.bootstrapItaliaSpritesLoaded - Ridotto logging console in Fixed Section atom (rimossi 5
console.log) - Migliorata gestione classi mobile in Fixed Section: aggiunto
removeClass('it-has-fixed-header') - Verificata compatibilità con modali, tooltip e comportamenti responsive
- Uniformati 150+ colori esadecimali in
gantry/presets.yamle 33 file YAML blueprints - Implementate CSS Custom Properties per cambio preset istantaneo senza reload
- Variabili disponibili:
--primary-color,--primary-medium,--accent-light - Fallback SCSS per compatibilità browser legacy
- Particelle aggiornate: Icone Link (v1.0.6), Logo (v1.0.3), Modale Ricerca (v1.0.4), Modale Login (v1.0.4)
- Unificazione nomenclatura:
GANTRY5_PARTICLE_*→TPL_BOOTSTRAPITALIA_PARTICLE_* - Cleanup: rimosso replace filter ridondante in modal-body
- Standard mantenuti:
GANTRY5_PARTICLE_MENU_INFO,GANTRY5_THEME_*,GANTRY5_PLATFORM_*rimangono invariati (standard Gantry) - Generazione CSS dinamica da
gantry/presets.yaml - Ciclo generico per tutte le sezioni Gantry senza codice hardcoded
- Dual CSS output (head + inline body) per robustezza
- localStorage + URL hash support per deep linking
- i18n completa con chiavi
TPL_BOOTSTRAPITALIA_PRESET_* - ARIA completa e SVG sprite loader dinamico
- Pattern Bootstrap Italia nativo: dropdown + link-list-wrapper
- Indicatori colore square (border-radius 2px)
- Responsive auto-adattante
- Particle Gantry 5 per selezione preset colore (Base Blu, Verde, Rosso, Neutro)
- UI: icon-toggle + dropdown menu con icona #it-settings
- Persistenza localStorage, accessibilità ARIA completa
- Hover: scale(1.2) + transizioni 0.2s ease-in-out
- Bootstrap Italia: 2.8.2 → 2.17.0
- Bootstrap Icons: 1.11.3 → 1.13.1
- jQuery: 3.6.0 → 3.7.1
- Rimosso Bootstrap standalone (duplicazione con bundle)
- Risolto avviso "Installa framework Gantry 5!"
- Template base aggiornato: Hydrogen v5.5.19 → v5.5.25
- Reinstallazione pulita: Gantry Framework v5.5.25 + template Bootstrap .Italia
- Personalizzazioni preservate: SCSS, particles, configurazioni Gantry
- Riorganizzato instruction.md in 9 sezioni
- Changelog allineati con snapshot versioni e date corrette
- Variabili SCSS Gantry:
$base-text-colore$accent-color-2per tutti i preset - Workflow: cambio preset → Compile CSS → aggiornamento automatico colori
- Modale Ricerca (v1.0.3): fix stacking context, backdrop in SCSS, hover scale(1.2)
- Modale Login (v1.0.2): colori preset-ready, pattern append-to-body
- Icone Link (v1.0.5): hover fluido con scale(1.2)
- Logo Header (v1.0.2): fill icone con
$base-text-color - Single source of truth: versioni nell'Atom CDN
- Rimossi campi
versionecss_urldalle particles - Niente duplicazione CSS, aggiornamento semplificato
- Fix movimento layout: niente variazione di
width/height, solotransform: scale() - Applicato a tutte le particelle: icone-link, modale-ricerca, modale-login
- Background circolare
#eaf4fbmantiene coerenza visiva - Aggiornato
instruction.mdcon workflow preset e note backdrop - Gantry compila le variabili SCSS di
scss/configuration/_colors.scssin base al preset selezionato - Le CSS Custom Properties non sono supportate nel flusso di compilazione SCSS di Gantry
transform: scale()ingrandisce visivamente senza alterare il box model (niente reflow)- Aggiornato a
bootstrap-italia.bundle.min.js(Bootstrap 5 + Popper.js) - Aggiunto CSS icone Bootstrap Italia
- Ottimizzate priorità caricamento risorse
- Effetti interattivi su icone social media
- Particle login modale Bootstrap Italia con integrazione modulo Joomla
- Design modali e animazioni fluide
- Responsive design mobile/desktop ottimizzato
- Aggiornamento completato alla versione 2.16.1 per particles CDN e Icons.
- Verificata compatibilità e funzionalità con nuovo framework.
- Ottimizzato particle per rendere fisso qualsiasi elemento Gantry durante scroll.
- Supporto selettori CSS Gantry (#g-header, #g-navigation).
- CSS ottimizzato con background, shadow e z-index.
- JavaScript con calcolo dinamico padding e gestione responsive.
- Rimossi tag HTML non semantici dalle descrizioni particles.
- Sostituiti con markup accessibile per screen reader.
- Aggiornate descrizioni particles con maggiore chiarezza.
- Migliorata documentazione tecnica sviluppatori.
- Ottimizzata la particella logo/intestazione: migliorata la configurazione backend, la gestione del testo e la flessibilità per layout Gantry 5.
- Sviluppata la particella icone/link: aggiunto campo testo configurabile per ogni icona, visualizzazione personalizzata e accessibile, ottimizzato markup e stile con classi native Bootstrap Italia.
- Sviluppata la particella modale di ricerca: markup aderente a Bootstrap Italia, gestione multilingua, accessibilità migliorata e stile centralizzato tramite SCSS.
- La modale di ricerca ha presentato difficoltà nell’importazione degli stili SCSS tramite Gantry; per garantire la corretta visualizzazione, lo stile è stato scritto inline direttamente nel file Twig.
- Si consiglia di verificare la compatibilità del compilatore SCSS di Gantry e, se possibile, centralizzare lo stile in futuro per una migliore manutenzione.
- Attenzione alle cache di Gantry e Joomla che possono impedire la visualizzazione immediata delle modifiche agli stili.
- Rinominato l'Atom "Fixed Header" in "Fixed Sections" per riflettere meglio la sua funzionalità.
- Impostata direttamente la versione "2.13.4" nel file YAML per il particle "Fixed Sections".
- Aggiornate le note per chiarire lo scopo principale del particle "Fixed Sections" e aggiunti dettagli sulle funzionalità offerte.
- Ottimizzato il file `instruction.md` per maggiore chiarezza e coerenza.
- Ottimizzato il file di changelog per migliorare la struttura e la leggibilità.
- Aggiunto supporto per il caricamento condizionale delle icone tramite CDN.
- Verificata la coerenza del set di icone con Bootstrap Italia.
- Ottimizzato il comportamento sticky per migliorare la compatibilità con dispositivi mobili.
- Aggiunto supporto per la personalizzazione del colore del bordo tramite variabili SCSS.
- Aggiornate le versioni delle risorse per garantire compatibilità con Bootstrap Italia v2.14.0.
- Ottimizzato il caricamento condizionale di CSS e JS per migliorare le prestazioni.
- Migliorato Atom CDN per garantire maggiore compatibilità con le linee guida di Bootstrap Italia.
- Creato un Atom per il caricamento di Bootstrap Icons tramite CDN.
- Aggiunto supporto per il caricamento condizionale delle icone.
- Aggiunta una linea sottostante per migliorare la separazione visiva.
- Ottimizzati gli stili SCSS per supportare l'ereditarietà dei font.
- Rimosso FontAwesome.
- Sostituita l'icona con un carattere Unicode per migliorare la compatibilità.
- Aggiunta configurazione per il caricamento condizionale di risorse CSS e JS.
- Introdotta la variabile SCSS
$header-border-colorper personalizzare il colore del bordo dell'header. - Ottimizzazioni generali per migliorare la leggibilità e l'estetica.
- Risolto un problema di compatibilità con il caricamento delle icone in alcuni browser.
- Ottimizzate le prestazioni del caricamento delle risorse CSS e JS.
- Aggiunto supporto per nuove variabili SCSS per una personalizzazione avanzata.
-
Il file
/templates/bootstrapitalia/layouts/defaults.yamldeve contenere tutte le posizioni stabilite nella cartella/templates/bootstrapitalia/blueprints/stylesaltrimenti non verranno visualizzate le posizioni nel layout. Questo è fondamentale durante la prima installazione del template. - Rimossi i file degli outlines con preset a colonne per semplificare la struttura del template.
- Head
- Bootstrap Italia CSS
- Splide.js CSS
- Popper.js
- Footer
- Bootstrap Italia JS
- Splide.js
- Anime.js
Override Componente com_users e Sistema Colori Dinamiciv1.0.19-beta
10 Febbraio 2026
Ristrutturazione Documentazione e Cleanup Particellev1.0.18-beta
9 Febbraio 2026
Framework di governance documentale che previene:
• Crescita incontrollata file instruction
• Difficoltà distinzione linee guida permanenti vs task completati
• Perdita tracciabilità cronologica modifiche
• Ambiguità interpretative tra "cosa fare sempre" vs "cosa è stato fatto"
Principio Guida: instruction.md = "Bibbia delle Regole", changelog = "Diario dei Progressi"
Ripresa Post-Regressione - Consolidamento Standardizzazione SCSS v1.0.17-beta
06/02/2026
Le versioni v1.0.15-beta e v1.0.16-beta sono state annullate a causa di regressioni critiche e perdite importanti di lavoro precedente. Questa versione rappresenta il ripristino passo dopo passo del lavoro realizzato in quelle versioni, consolidando solo le modifiche verificate e utili, con correzioni di regressioni identificate.
📚 Reference Documentazione: Consultare sezioni v1.0.15-beta e v1.0.16-beta sottostanti per dettagli tecnici completi delle modifiche da ripristinare. La documentazione è stata preservata integralmente per facilitare il consolidamento incrementale.
⏳ Procedure Standardizzate: Le procedure critiche introdotte in v1.0.15/v1.0.17 (7 regole changelog, rollback sicuro) sono ora permanenti in instruction.md - vedere sotto per link specifici.
06/02/2026 - Sessione pomeriggio - Implementazione colori dinamici che rispondono al preset-switcher
Fix Header Mobile e Normalizzazione Architettura SCSS - 100% Conformità v1.0.16-beta
06/02/2026
Questa sezione serve come checklist di chiusura sessione per assicurarsi che tutte le modifiche siano tracciate, documentate e allineate alle linee guida del progetto. Verificare completamento prima di considerare la versione finalizzata.
Regressione header mobile risolta (mattina 06/02/2026). 100% Conformità Architettonica SCSS raggiunta (pomeriggio 06/02/2026). 29 pattern legacy normalizzati tramite mixin centralizzati (transition, smooth-transition, breakpoint). 0 violazioni transition hardcoded. 0 violazioni z-index. 12 media query conformi con variabili C3. Nessuna breaking change introdotta. Architettura instruction.md 7.1 e 8.3 pienamente rispettata.
Documentazione Changelog, Fix Architetturali SCSS e Gestione Versioni v1.0.15-beta
05/02/2026
Standardizzazione SCSS e Fix Offcanvas Toggle v1.0.14-beta
30/01/2026
Miglioramenti UX Particelle e Multilingua v1.0.13-beta
29/01/2026
Standardizzazione Colori e CSS Custom Properties v1.0.12-beta
28/01/2026
Particle Preset Switcher (v1.0.1) v1.0.11-beta
27/01/2026
Particle Preset Switcher, Aggiornamenti CDN e Ottimizzazioni v1.0.10-beta
31/12/2025
Fix Gantry e Aggiornamento Template Hydrogen v1.0.9-beta
30/12/2025
Sistema Colori Preset e Ottimizzazioni UX v1.0.8-beta
29/12/2025
Ottimizzazioni Atoms CDN e Miglioramenti UX v1.0.7-beta
07/10/2025
Ottimizzazioni Complete v1.0.6-beta
24/09/2025
Ottimizzazioni e Nuove Particelle v1.0.5-beta
19/09/2025
Modifiche e Aggiornamenti v1.0.4-beta
17/04/2025
Ottimizzazioni e Aggiornamenti v1.0.3-beta
16/04/2025
Ottimizzazioni e Miglioramenti v1.0.2-beta
15/04/2025
Layouts e Fix v1.0.1-beta
17/03/2024
Atomv1.0.0-beta
05/03/2024
Creato un Atom per il caricamento di Bootstrap Italia tramite CDN, migliorando la compatibilità con le linee guida di Bootstrap Italia. Risorse caricate da questo Atom