v1.2.12-beta (03/09/2026 - Font Loader Implementation: Cross-Component Font Loading Solution): Risoluzione critica del problema di font inconsistenti tra particelle, componenti Joomla core (com_finder, com_users) e pagine statiche (changelog). La radice del problema era la risoluzione differente di path relativi dipendenti dal livello directory. Soluzione implementata: nuova particella atom
bootstrapitalia-font-loader che carica i font locali (Titillium Web, Lora, Roboto Mono) tramite Gantry Document API, pattern identico a bootstrapitalia-cdn.html.twig. File creati: (1) scss/bootstrapitalia/_fonts.scss con @font-face definitions, (2) custom/css-compiled/fonts.min.css CSS compilato e minificato, (3) particles/bootstrapitalia-font-loader.yaml configurazione atom particle, (4) particles/bootstrapitalia-font-loader.html.twig caricamento tramite gantry.document.addStyle() con priority 5. Validazione completata: atom particle caricato via backend, fonts.min.css carica correttamente nel head tag, font risolvono per tutte e 3 le aree (particelle, componenti core, pagine statiche). Impatto architetturale: centralizzazione font loading, path resolution corretta e coerente, fallback di sistema garantito offline. Zero regressioni. Font Loading Issue ✅ RISOLTO.v1.2.11-beta (01/09/2026 - Particella Area Riservata: Consolidamento UX + Refactoring Token SCSS): Versione di consolidamento della particella modale login con cleanup documentale e funzionale: rimossa la feature non supportata di testo dinamico "Accedi/Esci", introdotta terminologia semanticamente coerente "Area riservata", migliorata UX dei campi con separazione label/placeholder, localizzazione placeholder IT/EN e bridge JavaScript scoped alla modale. Completata la conversione hardcode → token in
scss/bootstrapitalia/_bootstrapitalia-modale-login.scss, uniformati i breakpoint responsive e validate le verifiche di compatibilita senza regressioni. Nella stessa sessione il metodo e stato applicato anche a modale ricerca, icone-link e logo/header, con audit completo su Twig/SCSS/YAML custom e checkpoint operativo per prosecuzione controlli nella sessione successiva.v1.2.10-beta (31/08/2026 - Naming Uniforme Backup Release + Audit Coerenza Colori BI): Formalizzazione della policy operativa di backup: a partire da questa versione, il pacchetto release utilizza naming uniforme
joomla-tpl_bootstrapitalia-istruzione_vx.x.x-x.zip per differenziare chiaramente l'edizione "Istruzione" (decisione coerente con v1.2.9-beta denominazione commerciale). Nella stessa versione è stato eseguito audit granulare del solo layer BI (scss/bootstrapitalia/ e override collegati), con allineamento preset/callback e normalizzazione offcanvas tramite variabili semantiche dedicate. Pattern estensibile a future edizioni (municipale, sanità, musei). Impatto: allineamento identità pacchetto da marketplace Joomla fino a versioning/backup e maggiore governabilità del sistema colore senza regressioni architetturali.v1.2.9-beta (28/08/2026 - Denominazione Commerciale Istruzione + Badge Multilingue + Strategia Scalabile): Formalizzazione naming commerciale template con edizione "Istruzione" (multisettore PA, riusabile da tutti gli enti pubblici). Aggiunta costante lingua
TPL_BOOTSTRAPITALIA_BADGE con traduzione it/en per badge dinamico nell'install page (data-driven, scalabile per future edizioni). Versioni aggiornate in templateDetails.xml v1.2.9-beta (28/08/2026) e gantry/theme.yaml v1.2.9-beta. Strategia scalabilità: template base (cartella bootstrapitalia/, struttura invariata) + due aree principali di variazione (preset colori in gantry/presets.yaml e testi in language/) con allineamento del metadato description in gantry/theme.yaml. Questo design consente future template Municipale/Sanità/Musei con minimal code duplication (stessa struttura, preset e costanti diversi). Impatto: naming chiaro nel marketplace Joomla, badge visibile in install page, architettura pronta per scale verticale (multi-edition).v1.2.8-beta (26/08/2026 - Strategia Preset Istituzionale Rivista + Architettura Gantry Validated): Cambio strategico del progetto Bootstrap Italia: da template 1+4 model (1 template + 4 preset) a 1+1 model (1 template + 2 preset). Template istituzionale mantiene solo
preset_istituzionale_blu (Primary) + preset_istruzione_rosso (Education); rimossi preset_municipalita_verde e preset_musei_civici_viola. Fix: templateDetails.xml updateserver placeholder (#) per eliminare errore Joomla update check. Hardening particella preset switcher: risolto errore Twig HTTP 500 (elif → elseif) e rimosso fallback CSS duplicato per semplificare il rendering data-driven. Validazione architettura Gantry: confermato che custom/config/ SEMPRE vince su layouts/ (priorità corretta); gantry/presets.yaml contiene palette disponibile indipendente da outline; layouts/default.yaml fallback puro (struttura sola). Architettura finale: 1 outline istituzionale + 2 preset semantici (governo + istruzione) → admin Joomla sceglie quale applicare. Impatto: zero rischi, strategia semplificata, struttura validata. Memoria repo aggiornata con nuova direzione progetto.v1.2.7-beta (02/07/2026 - Governance Changelog + Documentazione): Refactor sistema changelog con entry point stabile
changelogs/version/beta/changelog.html e rami separati per major.minor (changelog_1_0_x.html, changelog_1_1_x.html, changelog_1_2_x.html). Alineamento governance in 6 file .md. Regola anti-impatto futuro: nessun aggiornamento .md richiesto per nuovi rami 1.3.x, 1.4.x, solo link aggiunto a entry point. Manutenzione documentale ridotta dal 100% a 0% per future release.v1.2.6-beta (11/06/2026 - Particella Logo Dual Mode): Ampliamento particella bootstrapitalia-logo con supporto dual mode per afterbottom. Nuovo campo image2 opzionale, layout flex auto-detect con bi-logo-dual, spacing e breakpoint responsive tramite variabili SCSS. Compatibilità header (single logo) garantita. Token-driven: nessun hardcoding, tutte le dimensioni da configuration/_dimensions.scss e spacing da configuration/_spacing.scss.
v1.2.5-beta (10/06/2026 - Menu Joomla + Afterbottom Optimization + Color System Analysis): Migrazione .nav.mod-list a layer Joomla, separatore › standardizzato. Ottimizzazione afterbottom (CSS custom properties, h3→h4, spacing, pattern stabilizzato). Analisi color system: audit palette 7 colori (3-4 SCSS-generabili), mapping 5 dipendenze cross-layer, decisione demandata a sessione investigation.
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.
Sessione v1.2.12-beta - Font Loader Implementation: Cross-Component Font Loading Solutionv1.2.12-beta
03/09/2026
- Sintomi osservati: font visualizzati correttamente solo se installatI localmente su PC utente, mancanti in ambiente disconnesso. Aree non colpite: particelle (modale login, footer, copyright). Aree colpite: componenti Joomla core (search form, login form) e pagine statiche HTML (changelog).
- Causa radice: file SCSS source (
scss/configuration/_typography.scss) contiene SOLO variabili font-family, ZERO @font-face rules. Mancava il layer di @font-face che risolva il caricamento file font dal disco. Inoltre, path relativi calcolati diversamente a seconda della directory di provenienza:- Particelle (dentro Gantry): path relativo risolto correttamente dal backend
- Core Joomla (
html/com_*): path relativo SBAGLIATO per quella directory depth - Changelog statico (
changelogs/version/beta/): path relativo SBAGLIATO per quella directory depth
- Soluzione strategica: centralizzare il caricamento font tramite un meccanismo unico (Gantry Document API) che risolve il path dal backend, garantendo coerenza per tutte e 3 le aree.
- File creato:
scss/bootstrapitalia/_fonts.scss. - Contenuto: 8 @font-face per Titillium Web (300/400/600/700 + italic rispettivi), 1 @font-face Lora (400), 1 @font-face Roboto Mono (400).
- Path: assoluti via server root (
/templates/bootstrapitalia/fonts/titillium_web/titillium-web-v10-latin-ext_latin-300.woff2, ecc.). - Proprietà:
font-display: swapper garantire caricamento testo anche se font in ritardo. Multi-format: eot, woff2, woff, ttf, svg per massima compatibilità browser e offline fallback. - Verifica: audit completo su disponibilità file font in
fonts/titillium_web/,fonts/lora/,fonts/roboto_mono/confermato.
- File creato:
custom/css-compiled/fonts.min.css. - Contenuto: output compilato delle @font-face definitions (10 rules compattate, minificate).
- Nota architetturale: file genera direttamente via SCSS compilation output, non richiede SCSS compiler runtime (pre-compilato per distribuzione).
- Utilizzo: questo file sarà caricato dalla particella font-loader tramite Gantry Document API nel head tag.
- File YAML:
particles/bootstrapitalia-font-loader.yaml.- Type:
atom(non visibile in frontend, solo caricamento risorse). - Campi:
enabled(checkbox, default true),load_local_fonts(toggle, default true). - Documentazione: descrizione dettagliata del funzionamento e della strategia (Single Source of Truth, path resolution, fallback sistema).
- Type:
- File Twig:
particles/bootstrapitalia-font-loader.html.twig.- Pattern di caricamento: identico a
bootstrapitalia-cdn.html.twig(coerenza architetturale). - Meccanismo Gantry :
- Priority: 5 (carica PRIMA di altri CSS, dopo Gantry core) per garantire che font-family variables siano disponibili.
- Fallback: se
gantry.path.url()fallisce, carica diretto via path assoluto. - Condizionalità: carica solo se
particle.enabledeparticle.load_local_fontssono true.
{% do gantry.document.addStyle('/templates/bootstrapitalia/custom/css-compiled/fonts.min.css', 5) %} - Pattern di caricamento: identico a
- Fase di caricamento: atom particle aggiunto al backend Gantry (caricamento automatico via outline default).
- Verifica head tag:
fonts.min.csscarica correttamente nel tag<head>con path assoluto risolto. - Test aree:
- ✅ Particelle: modale login, footer, copyright, icone-link — font Titillium Web visibile, corretto.
- ✅ Componenti Core Joomla:
com_finder(search form) ecom_users(login form) — font risolvono, input coerenti con design. - ✅ Pagine statiche: changelog HTML (
changelogs/version/beta/) — font caricano via link tag globale generato da Gantry, nessun errore path.
- Fallback offline: se disconnesso da internet e Gantry Document API non disponibile, system fallback (font installed locale) rimane disponibile.
- Centralizzazione font loading: Single Source of Truth per tutte e 3 le aree (particelle, core, static pages).
- Consistency: path resolution coerente tramite Gantry backend, niente calcoli differenti per directory.
- Pattern coerente: replica esatta del pattern
bootstrapitalia-cdn.html.twig(CDN loader), stesso meccanismo Gantry Document API. - Manutenibilità: aggiunte nuove font richiede SOLO modifica a
scss/bootstrapitalia/_fonts.scss+ recompilazione CSS, niente cambiamenti nei file Twig/Joomla. - Performance: CSS minificato e cacheable, loading prioritizzato prima di altri CSS.
- Ridondanza ridotta:
scss/configuration/_typography.scssrimane pura fonte di verità per NOMI dei font (font-family variables),_fonts.scssgestisce CARICAMENTO file.
- ✅
scss/bootstrapitalia/_fonts.scss— Nuova definizione, @font-face per tutti i font locali. - ✅
custom/css-compiled/fonts.min.css— Nuova compilazione, CSS minificato. - ✅
particles/bootstrapitalia-font-loader.yaml— Nuova particella, configurazione atom. - ✅
particles/bootstrapitalia-font-loader.html.twig— Nuova particella, Gantry Document API. - 📌
scss/configuration/_typography.scss— Non modificato, mantiene variabili font-family.
Checkpoint v1.2.12-beta - Ripresa Sessione: Uniformazione Particelle + Audit Coerenza Input UI + Ottimizzazione Componenti Core Joomla⚠️ RIPRESA
02/09/2026
- Uniformazione Particelle (Continuazione v1.2.11 - Task 7 fase 2):
- ✓ Completamento audit modale login e modale ricerca (no CSS inline, token-driven SCSS)
- ✓ Estensione del metodo uniformazione a particelle icone-link, logo/header, copyright-istituto
- ⚠️ Iniziate modifiche ai file SCSS ma non completate
- Audit Coerenza Input Form (PROBLEMATICHE RISCONTRATE):
- ✓ Identificato problema: resa grafica degli input non coerente con design Bootstrap Italia
- ✓ Input su modale login e modale ricerca presentavano styling non omogeneo
- ⚠️ Iniziate analisi delle cause (conflitto tra CSS Twig, fallback SCSS e BI core)
- Ottimizzazione Componenti Core Joomla (PERSO - PARZIALE):
- ✓ Identificazione componenti critici:
com_finder(search) ecom_users(login form) - ✓ Audit SCSS:
html/com_finder/ehtml/com_users/per allineamento input styling - ⚠️ Iniziate modifiche per uniformare input con BI standard, non salvate
- ⚠️ File SCSS modificati ma non compilati e non testati
- ✓ Identificazione componenti critici:
- Strategia Complessiva Identificata:
- ✓ Confermato che il problema non è isolato alle particelle, ma esteso ai componenti Joomla core
- ✓ Definita sequenza corretta: 1) uniformare particelle, 2) uniformare componenti core, 3) validare compilazione globale
- ✓ Identificata necessità di una strategia di test incrementale post-modifica
- Modifiche SCSS Componenti Core:
- Variabili dedicate per input form (border-color, background-color, focus state) non salvate
- Allineamento
scss/bootstrapitalia-joomla/bi-finder.scss(search form styling) non persistito - Allineamento
scss/bootstrapitalia-joomla/bi-user.scss(login/registrazione form) non persistito
- Modifiche Particelle (parziali):
- Completamento ottimizzazioni icone-link, logo/header non salvato
- Riallineamento YAML custom per particelle non finalizzato
- Compilazione SCSS:
- Build complessiva del progetto non completata
- CSS minificato non generato
- Map di sourcing non aggiornato
- Salvataggio Template/Layout:
- File template/layout in working state non salvati
- Stato Gantry configuration parziale non persistito
- Errore HTTP 500: Durante il caricamento della pagina web di amministrazione Joomla, errore di sistema non specificamente tracciato (presumibilmente compilazione SCSS interrotta).
- Perdita Stato Applicazione: Il template non ha registrato correttamente le modifiche ai file (possibile lock di file o salvataggio asincrono fallito).
- Instabilità Compilazione SCSS: Probabilmente una sintassi non valida o una variabile non dichiarata ha causato il fallimento della build complessiva, rendendo il template inutilizzabile.
- Mancanza di Test Incrementale: Non era stato implementato un checkpoint di validazione dopo ogni modifica, causando l'accumulo di cambiamenti senza verifica intermedia.
- Strategia di Rollback:
- ✅ v1.2.11-beta ripristinata come punto di partenza stabile
- ✅ Nessun lavoro critico perso (v1.2.11-beta rimane il fondamento solido)
- ✅ Lezione appresa: riprendere da checkpoint validato
- Nuova Strategia di Esecuzione (v1.2.12-beta - PIANIFICATO):
- Fase A - Uniformazione Particelle (Continuazione v1.2.11, Task 7 Completo):
- Completare audit e ottimizzazione icone-link, logo/header, copyright-istituto
- Validare compilazione SCSS per ogni particella prima di proseguire
- Checkpoint: caricamento pagina web senza errori
- Fase B - Audit e Standardizzazione Input Form Componenti Core:
- Scope controllato:
scss/bootstrapitalia-joomla/bi-finder.scss(search form) escss/bootstrapitalia-joomla/bi-user.scss(login/registrazione) - Intervento: creare variabili dedicate per input styling in
scss/bootstrapitalia-joomla/con file specifici tokenizzati - Integrazione: importare file in
scss/bootstrapitalia-joomla.scsscon priorità corretta - Checkpoint: validare coerenza visiva input su tutte le pagine
- Scope controllato:
- Fase C - Validazione Globale e Test Compilazione:
- Build completa SCSS e CSS minificato
- Caricamento pagina web senza errori
- Test visivo su almeno 3 breakpoint (mobile/tablet/desktop)
- Verifica retrocompatibilità con v1.2.11-beta (nessuna regressione funzionale)
- Fase A - Uniformazione Particelle (Continuazione v1.2.11, Task 7 Completo):
- Governance Processuale:
- ✓ Implementare checkpoint di validazione DOPO ogni Task completato (non accumulare modifiche)
- ✓ Validazione comprende: 1) sintassi SCSS, 2) compilazione build, 3) caricamento pagina web, 4) screenshot visivo
- ✓ Documentare incidenti in checkpoint per ridurre rischio di regressione futura
- ✓ Salvare stato di work-in-progress con `git add` dopo ogni checkpoint validato
- Ambito Temporale:
- Fase A: ~1-2 ore (completamento task 7, validazione)
- Fase B: ~2-3 ore (audit + ottimizzazione componenti core)
- Fase C: ~1 ora (validazione globale, test)
- Totale stima: 4-6 ore per raggiungimento obiettivo di coerenza UX completo
- Particelle (completamento fase 2 v1.2.11):
particles/bootstrapitalia-icone-link.html.twigparticles/bootstrapitalia-icone-link.yamlscss/bootstrapitalia/_bootstrapitalia-icone-link.scsscustom/config/default/particles/bootstrapitalia-icone-link.yamlparticles/bootstrapitalia-logo.html.twigparticles/bootstrapitalia-logo.yamlscss/bootstrapitalia/_bootstrapitalia-logo.scsscustom/config/default/particles/bootstrapitalia-logo.yaml
- Componenti Core Joomla (Fase B - Nuovo Scope):
scss/bootstrapitalia-joomla/bi-finder.scss(search form styling, token-driven)scss/bootstrapitalia-joomla/bi-user.scss(login/registration form styling, token-driven)scss/bootstrapitalia-joomla.scss(import e orchestrazione file)
- Compilazione Build:
custom/css-compiled/(output rebuild SCSS)
Sessione v1.2.11-beta - Particella Area Riservata: Consolidamento UX + Refactoring Token SCSSv1.2.11-beta
01/09/2026
- Intervento: rimozione della logica documentata ma non supportata di cambio testo dinamico "Accedi" ↔ "Esci" basato sullo stato utente.
- Motivazione: in Gantry la feature non era affidabile e introduceva incoerenza tra documentazione e comportamento reale.
- Comportamento finale: pulsante statico che apre la modale; gestione autenticazione lasciata al modulo Joomla.
- Intervento: adozione della terminologia "Area riservata" al posto di "Accedi" come etichetta persistente della particella.
- Razionale UX: la label descrive una sezione del sito, resta corretta indipendentemente dallo stato di login.
- Ambito: testi particella, tooltip, titolo modale e fallback lingua, in italiano e inglese.
- Problema: duplicazione visiva (label e placeholder identici su username/password).
- Soluzione: placeholder istruzionali localizzati, distinti dalla label di campo.
- Implementazione: bridge JavaScript in Twig con applicazione placeholder su apertura modale, scope limitato al container modal login per evitare side-effect.
- Nuove chiavi lingua:
TPL_BOOTSTRAPITALIA_PARTICLE_LOGIN_PLACEHOLDER_USERNAMEeTPL_BOOTSTRAPITALIA_PARTICLE_LOGIN_PLACEHOLDER_PASSWORD. - Esito: placeholder gestiti via file lingua, centralizzati e coerenti con il flusso i18n del template.
- File principale:
scss/bootstrapitalia/_bootstrapitalia-modale-login.scss. - Intervento: conversione progressiva dei valori hardcoded (spaziature, tipografia, stati interattivi, colori) in variabili/token e fallback CSS custom properties.
- Spacing form: standardizzato con formula tokenizzata per mantenere ritmo verticale coerente tra i breakpoint.
- Mixins: consolidato uso di mixin per transizioni e focus state per coerenza e manutenibilita.
- Approccio: una regola coerente di spaziatura per desktop/tablet/mobile con adattamento controllato su tablet.
- Obiettivo: leggibilita, distanza visiva tra campi e usabilita su schermi piccoli senza override frammentati.
- Sequenza operativa validata: audit Twig per inline styles, allineamento SCSS token-driven, verifica hardcode e controllo coerenza YAML custom/default.
- Modale ricerca: standardizzate transizioni con mixin tokenizzati, impostata coerenza visiva dell'icona e verificata compilazione SCSS.
- Icone & Link: rimosse transizioni hardcoded residue e uniformato il comportamento dell'icona con pattern comune alle modali.
- Logo / Header: completati i mixin di transizione con durata/easing espliciti token-driven e consolidata la coerenza dei fallback grafici.
- Copyright Istituto: audit confermato clean (Twig senza inline style critici, SCSS gia tokenizzato, YAML custom coerente).
- Governance custom YAML: riallineata la struttura della particella login in
custom/config/default/particles/con aggiunta dei campi mancanti per uniformita con le altre particelle.
- ✅ Verifica sintassi SCSS completata (errore parentesi risolto e file stabile).
- ✅ Verifica assenza regressioni funzionali nella particella modal login.
- ✅ Verifica coerenza i18n su it-IT e en-GB per tutte le nuove chiavi introdotte.
- ✅ Verifica approccio token-driven applicato al perimetro della particella.
particles/bootstrapitalia-modale-login.yamlparticles/bootstrapitalia-modale-login.html.twigscss/bootstrapitalia/_bootstrapitalia-modale-login.scsscustom/config/default/particles/bootstrapitalia-modale-login.yamlparticles/bootstrapitalia-modale-ricerca.html.twigscss/bootstrapitalia/_bootstrapitalia-modale-ricerca.scsscustom/config/default/particles/bootstrapitalia-modale-ricerca.yamlparticles/bootstrapitalia-icone-link.html.twigscss/bootstrapitalia/_bootstrapitalia-icone-link.scsscustom/config/default/particles/bootstrapitalia-icone-link.yamlparticles/bootstrapitalia-logo.html.twigscss/bootstrapitalia/_bootstrapitalia-logo.scsscustom/config/default/particles/bootstrapitalia-logo.yamlparticles/bootstrapitalia-copyright-istituto.html.twigscss/bootstrapitalia/_bootstrapitalia-copyright-istituto.scsscustom/config/default/particles/bootstrapitalia-copyright-istituto.yamllanguage/it-IT/it-IT.tpl_bootstrapitalia.inilanguage/en-GB/en-GB.tpl_bootstrapitalia.ini
Sessione v1.2.10-beta - Naming Uniforme Backup Releasev1.2.10-beta
31/08/2026
- Natura della Decisione: A partire da questa versione (v1.2.10-beta), la procedura di backup di ogni release inizierà ad utilizzare il naming uniforme
joomla-tpl_bootstrapitalia-istruzione_vx.x.x-xper differenziare chiaramente il pacchetto edizione "Istruzione" dal template generico. - Rationale: A fronte della decisione v1.2.9-beta di formalizzare il naming commerciale "Istruzione" (multisettore PA) con denominazione esplicita nel marketplace Joomla, è opportuno che anche i backup release mantengano la medesima identità nel nome del pacchetto distribuito.
- Pattern Backup:
- Prima:
joomla-tpl_bootstrapitalia-vx.x.x-x.zip(generico, senza edizione) - Dopo (v1.2.10+):
joomla-tpl_bootstrapitalia-istruzione_vx.x.x-x.zip(esplicito, include edizione "istruzione")
- Prima:
- Applicabilità Futura: Quando future edizioni (Municipale, Sanità, Musei) verranno rilasciate, ciascuna seguirà il medesimo pattern:
joomla-tpl_bootstrapitalia-municipale_vx.x.x-x.zipjoomla-tpl_bootstrapitalia-sanita_vx.x.x-x.zipjoomla-tpl_bootstrapitalia-musei_vx.x.x-x.zip
- Impatto Operativo:
- Release notes devono esplicitare il nuovo naming nel packaging
- Script di deployment/backup devono aggiornare i reference di naming
- Documentazione di distribuzione (updateserver, marketplace) deve riportare il nuovo schema
- Nessun impatto sul codice sorgente del template (cartella
bootstrapitalia/rimane invariata)
- Scope controllato: audit granulare concentrato sul solo layer BI (
scss/bootstrapitalia/e override collegati), escludendo il resto del tema non ancora ottimizzato. - Esito: nessuna diffusione di hardcode cromatici nel layout BI; consumo prevalente via variabili/token (
var(--token, $fallback)). - Allineamento palette: riallineato il medium primario del preset istituzionale a
#0059b3ingantry/presets.yaml; armonizzata la scala del preset istruzione; aggiornato callback inblueprints/styles/accent.yaml(color-2). - Normalizzazione offcanvas: sostituiti gli inline
rgba($black, 0.3)ergba($black, 0.5)inscss/bootstrapitalia/_bi-offcanvas.scsscon variabili dedicate inscss/configuration/_colors.scss($offcanvas-indicator-background,$offcanvas-indicator-hover-background). - Impatto: catena colore più robusta e manutenibile, compatibile con future semplificazioni/rimozioni di posizioni senza regressioni architetturali.
- Collegamento v1.2.9-beta: La decisione commerciale di naming "Istruzione" (v1.2.9-beta, 28/08/2026) rappresenta il fondamento di questa scelta operativa di backup. Marketplace + badge + denominazione interna devono restare allineati.
- Allineamento Identità: Dall'utente admin Joomla che scarica il template nel marketplace, fino allo sviluppatore che estrae il backup in versioning, il nome del pacchetto deve trasmettere coerenza di edizione.
- Documentazione Governance: Questa decisione deve essere formalizzata nella checklist di versioning (
.github/versioning_closure.md) affinché ogni release futura incorpori il naming corretto nel packaging.
- Metadata versione (templateDetails.xml, gantry/theme.yaml) da v1.2.9-beta a v1.2.10-beta
- Data di versioning a 31/08/2026 (questa sessione)
- Schema naming backup nella documentazione release
- Verifica allineamento checklist versioning con nuovo pattern
Sessione v1.2.9-beta - Denominazione Commerciale Istruzione + Badge Multilingue + Strategia Scalabilev1.2.9-beta
28/08/2026
- Natura Template: Bootstrap .Italia - Istruzione (multisettore PA).
- Uso Reale: Idoneo per TUTTI gli enti pubblici italiani (scuole, università, comuni, sanità, musei, etc.). NO obbligo di uso per istruzione; solo positioning commerciale.
- Rationale Naming: Focalizzazione su istruzione come early adopter; futuri template separati (Municipale, Sanità) useranno lo stesso blueprint base.
- Marketplace Joomla: Descrizione in
.sys.inimantiene la specifica edizione ("Bootstrap .Italia - Istruzione") per chiarezza nel listing; la pagina di installazione usa invece il badge e una descrizione neutra senza ridondanza.
- Esigenza: Badge "Istruzione" sulla install page deve essere tradotto (it/en) e non hardcoded.
- Soluzione: Aggiunta costante
TPL_BOOTSTRAPITALIA_BADGEnei file lingua:language/it-IT/it-IT.tpl_bootstrapitalia.ini:TPL_BOOTSTRAPITALIA_BADGE="Istruzione"language/en-GB/en-GB.tpl_bootstrapitalia.ini:TPL_BOOTSTRAPITALIA_BADGE="Education"
- Implementazione:
install/templates/install.html.twigutilizza{{ 'TPL_BOOTSTRAPITALIA_BADGE'|translate }}per rendering dinamico. - Impatto: Zero hardcoding; badge visibile in install page con lingua corretta a runtime.
- File modificati:
language/it-IT/it-IT.tpl_bootstrapitalia.ini,language/en-GB/en-GB.tpl_bootstrapitalia.ini,install/templates/install.html.twig
- templateDetails.xml:
- Versione:
1.2.9-beta - Data:
Aug 28, 2026
- Versione:
- gantry/theme.yaml:
- Versione:
1.2.9-beta - Data:
Aug 28, 2026 - Description:
Bootstrap .Italia - Istruzione(aggiunto badge per chiarezza)
- Versione:
- Allineamento Marketplace:
.sys.inidescrive il template come "Bootstrap .Italia - Istruzione" nei listing Joomla; il file.iniresta neutro per la pagina di installazione, evitando doppia menzione dell'edizione. - File modificati:
templateDetails.xml,gantry/theme.yaml,language/it-IT/it-IT.tpl_bootstrapitalia.sys.ini,language/en-GB/en-GB.tpl_bootstrapitalia.sys.ini
- Pattern Template Base: Struttura invariata (
bootstrapitalia/) per TUTTE le edizioni. - Punti di Variazione Minimi per Nuova Edizione: cambiano 2 macro-aree, con sincronizzazione del metadato tema:
gantry/presets.yaml— Colori, nomi e descrizioni preset specifici per settore (es. verde per Municipale, cyan per Sanità)language/(it-IT + en-GB) — CostanteTPL_BOOTSTRAPITALIA_BADGEper il badge e la descrizione runtime, più la descrizione.sys.iniper il marketplace Joomlagantry/theme.yaml— Allineamento della vocedescriptioncon la denominazione commerciale dell'edizione
- Coerenza Cross-Layer: la descrizione di marketplace e la label dell'install page hanno un compito diverso: il primo esplicita l'edizione, il secondo usa il badge senza ridondanza. Questa regola è stata mantenuta costante per evitare duplicazioni visive e riconfermare la separazione tra contesto UI e contesto catalogo.
- Vantaggi:
- Zero code duplication tra edizioni (riuso totale di includes/, html/, particles/, templateDetails.xml, layouts/, scss/)
- Manutenzione centralizzata per bug fix core (vale per tutte le edizioni)
- i18n nativa: badge e descrizione si traducono automaticamente it/en via costanti lingua
- Onboarding future template: copy questo template, modifica gantry/presets.yaml + language/ (.sys.ini + .ini) + gantry/theme.yaml description, pronto
- Roadmap Future:
bootstrapitalia/(Istruzione) — questa versionebootstrapitalia-municipale/(Verde) — future v1.x, stessa struttura + preset verde + badge "Municipale"bootstrapitalia-sanita/(Cyan) — future v1.x, stessa struttura + preset cyan + badge "Sanità"bootstrapitalia-musei/(Viola) — future v1.x, stessa struttura + preset viola + badge "Musei"
- ✅
language/it-IT/it-IT.tpl_bootstrapitalia.ini— CostanteTPL_BOOTSTRAPITALIA_BADGE="Istruzione" - ✅
language/it-IT/it-IT.tpl_bootstrapitalia.sys.ini— Descrizione con badge "Istruzione" - ✅
language/en-GB/en-GB.tpl_bootstrapitalia.ini— CostanteTPL_BOOTSTRAPITALIA_BADGE="Education" - ✅
language/en-GB/en-GB.tpl_bootstrapitalia.sys.ini— Descrizione con badge "Education" - ✅
install/templates/install.html.twig— Badge dinamico{{ 'TPL_BOOTSTRAPITALIA_BADGE'|translate }} - ✅
templateDetails.xml— Versione 1.2.9-beta (28/08/2026) - ✅
gantry/theme.yaml— Versione 1.2.9-beta (28/08/2026) + description aggiornata - ✅
gantry/presets.yaml— Header aggiornato a v1.2.9-beta + nota edizione "Istruzione"
- Naming Formalizzato: Marketplace Joomla mostrerà "Bootstrap .Italia - Istruzione", chiaro e professionale.
- Esperienza Install: Admin vede badge "Istruzione" (o "Education" in inglese) durante setup, senza hardcoding.
- Zero Disruption: Istanze existing non impattate; cartella
bootstrapitalia/, manifestinvariati.bootstrapitalia - Pronto per Scale: Architettura consolidata per future 3-4 template (Municipale, Sanità, Musei) con minimal changes.
- Next Session: Potranno crearsi nuove edizioni copiando questo template, modificando preset colori, file lingua e description metadata in modo sincronizzato.
Questione Risolta: install.html.twig è stato reso coerente con la logica di Gantry e il contesto di localizzazione.
Scelta Adottata: OPZIONE 1 (Costanti Lingua Ovunque)
- install.html.twig usa costanti lingua
|translateper tutte le label di UI - about.html.twig usa lo stesso pattern, mantenendo una struttura uniforme
- badge e descrizione sono ora separati per contesto: badge in install page, descrizione in .sys.ini per marketplace Joomla
Regola Finale Applicata:
- File
.ini: testo runtime dell'install page, neutro e senza ridondanza visiva - File
.sys.ini: descrizione marketplace Joomla, può includere la denominazione edizione - Badge: mantiene sempre la label edizione per identità visiva del template
- Rimozione chiavi inutilizzate: costanti
EDITION_CODEeEDITION_LABELeliminate dopo verifica che non avessero utilizzi nel tema
Vantaggi Architetturali:
- ✅ Uniformità i18n: install page + about page usano lo stesso pattern costanti lingua
- ✅ Scalabilità Garantita: future edizioni cambiano solo badge + descrizione del contesto
- ✅ Coerenza Semantica: badge + marketplace + UI hanno ruoli separati ma chiaramente definiti
- ✅ Zero Inconsistenza Cross-Lingua: it-IT e en-GB restano allineate senza ridondanza
- ✅ Manutenibilità: tutte le label del template restano centralizzate nei file lingua
Status: ✅ IMPLEMENTATO E MANTENUTO
Ciclo di Verifica Completato: dopo l'implementazione dei badge multilingue e della strategia i18n, è stata condotta una verifica finale per eliminare costanti inutilizzate e confermare coerenza tra livelli.
Task 1 - Rimozione Costanti Orfane:
- Costanti Identificate e Rimosse:
TPL_BOOTSTRAPITALIA_EDITION_CODE="istruzione"(non utilizzata in alcun template, particle o include)TPL_BOOTSTRAPITALIA_EDITION_LABEL="Istruzione"(non utilizzata in alcun template, particle o include)
- Verifica eseguita: grep su tutto il codebase ha confermato zero match di queste costanti al di fuori dei file .ini
- File modificati:
language/it-IT/it-IT.tpl_bootstrapitalia.ini,language/en-GB/en-GB.tpl_bootstrapitalia.ini - Impatto: Riduzione rumore nei file lingua, architettura più pulita e manutenibile
Task 2 - Verifica Coerenza Cross-File i18n:
- Pattern Confermato: tre livelli distinti, ognuno con ruolo preciso:
language/it-IT/it-IT.tpl_bootstrapitalia.ini→ descrizione runtime neutro (install page UI)language/it-IT/it-IT.tpl_bootstrapitalia.sys.ini→ descrizione con edizione (marketplace Joomla, listing catalogo)gantry/theme.yaml→ metadato tema con edizione (preview admin Gantry, identificazione visiva)
- Differenza Intenzionale, Non un Bug: la variazione è necessaria perché ogni contesto ha esigenze diverse:
- UI runtime: descrizione compatta, senza ridondanza visiva (badge già presente)
- Marketplace: descrizione esplicita con edizione per chiarezza catalogo
- Gantry admin: metadato con edizione per identificazione immediata
- Allineamento it-IT e en-GB: entrambe le lingue mantengono lo stesso pattern, nessuna inconsistenza cross-lingua
- Impatto: Architettura i18n consolidata, zero rischi di break, leggibilità del codice confermata
Task 3 - Aggiornamento Documentazione Changelog:
- Changelog aggiornato con regola finale: separazione chiara tra contexti e rationale
- Documentazione della strategia multi-edition confermata e validata
- Preparazione completata per future versioni (Municipale, Sanità, Musei) con minimal friction
Task 4 - Correzione Rendering Entità HTML (frontend admin):
- Ripristinate entità HTML nel file lingua IT per compatibilità con contenuti HTML nei testi ABOUT
- Aggiornati i tre titoli ABOUT nel Twig admin da
|transa|trans|rawper evitare visualizzazione letterale di entità comeà - Confermata assenza di duplicati nel metadato
descriptiondigantry/theme.yaml(presenza singola, nessun conflitto)
Status: ✅ VERIFICA COMPLETATA - ZERO INCOERENZE, ARCHITETTURA STABILE
Sessione v1.2.8-beta - Strategia Preset Istituzionale Rivista + Validazione Architettura Gantryv1.2.8-beta
26/08/2026
elseif + cleanup fallback CSS + semplificazione data-driven riusabile), architettura Gantry validata con test cascata priorità, memoria repo aggiornata.
- Direzione precedente (1+4 model): 1 template + 4 preset semantici (governo/blu, istruzione/rosso, municipalità/verde, musei/viola) per massima flessibilità distribuzione.
- Nuova direzione (1+1 model, 2026-08-26): Template istituzionale unico con 2 preset solo (blu + rosso). Verde e viola rimossi. Razionale: semplificazione scope, altri tipi di PA (Comuni, Musei) useranno template separati in future versioni.
- Impatto immediato: gantry/presets.yaml pulito (2 preset, -80 righe), documentazione aggiornata, architettura semplificata senza perdita di funzionalità.
- Problema: campo
updateserverpuntava a URL non raggiungibilehttps://iamawebmaster.com/updates/bootstrapitalia.xml, generando errore Joomla durante update check. - Soluzione: cambiato updateserver a placeholder
#(valido per Joomla 5.4+, disabilita update checking senza errore). - Riferimento pattern: placeholder coerente con
gantry/theme.yamlche usa il medesimo pattern per versioning metadata. - File modificato:
templateDetails.xml
- Rimozione preset non necessari:
- Rimosso
preset_municipalita_verde(80+ righe, 20+ sezioni con colori verde) - Rimosso
preset_musei_civici_viola(80+ righe, 20+ sezioni con colori viola)
- Rimosso
- Preset mantenuti:
preset_istituzionale_blu(Primary, default) +preset_istruzione_rosso(Alternativa per scuole) - Header aggiornato: da "VERSIONE DEMO" a "VERSIONE TEMPLATE ISTITUZIONALE (2 preset)" con mapping semantico documentato.
- Impatto: file dimezzato (~50% riduzione), manutenzione semplificata, admin Joomla vede solo 2 scelte di colore al lancio Gantry.
- File modificato:
gantry/presets.yaml
- Domanda architettuale: ha senso mantenere 2 preset in
layouts/default.yamlsecustom/config/SEMPRE vince? Oppure il base outline dovrebbe averne solo 1? - Test cascata priorità: eseguiti 4 test di combinazione per validare gerarchia Gantry:
- Base BLU + Theme BLU → Front BLU ✓
- Base ROSSO + Theme BLU → Front BLU (theme vince) ✓
- Base BLU + Theme ROSSO → Front ROSSO (theme vince) ✓
- Base ROSSO + Theme ROSSO → Front ROSSO ✓
- Conclusione:
custom/config/ha SEMPRE priorità sulayouts/. Nessuna ridondanza nel mantenere 2 preset in base outline, perché Gantry legge SEMPRE dagantry/presets.yamlindipendentemente da quale outline scelto.
- Problema bloccante: errore Twig in produzione con HTTP 500 (
Unexpected "elif" tag) nella particellabootstrapitalia-preset-switcher. - Root cause: uso del tag non valido
elifin contesto Twig (sintassi corretta:elseif). - Fix applicato: sostituito
elifconelseifnel blocco di fallback etichette preset, mantenendo la logica di traduzione. - Refactoring funzionale: eliminata la logica hardcoded legata a preset specifici e consolidato il rendering in modalità data-driven a partire da
gantry.theme.presets. - Semplificazione architetturale: particella resa neutra rispetto al dominio (non vincolata a un tipo di ente/template), quindi riusabile in qualsiasi template che esponga preset Gantry compatibili.
- Ordine fallback confermato: traduzione lingua →
descriptionda YAML → label derivata da key preset. - Cleanup strutturale: rimosso blocco fallback CSS inline ridondante (duplicava la logica del blocco
stylesheets), riducendo complessità e rischio desincronizzazione. - Risultato: parsing Twig ripristinato, rendering della dropdown preset stabile e componente più portabile tra template diversi grazie alla struttura data-driven.
- File modificato:
particles/bootstrapitalia-preset-switcher.html.twig
- Ruolo di layouts/default.yaml: fallback puro (struttura sezioni sola), nessun preset definito localmente.
- Ruolo di gantry/presets.yaml: fonte unica per palette colori disponibili (2 preset in questo template). Admin vede sempre le stesse 2 scelte indipendentemente da dove parte (base o theme outline).
- Ruolo di custom/config/default/styles.yaml: scelta istanza (quale preset è applicato oggi). Sovrascritto da admin quando cambia colore in Gantry UI.
- Gerarchia definitiva: custom/config/ > layouts/ (priorità layout istanza > fallback distribuizione). Gantry NON fallback da custom/config/ → layouts/ automaticamente; protezione via Git backup.
- ✅
templateDetails.xml— updateserver placeholder (#) - ✅
gantry/presets.yaml— 2 preset (blu + rosso), header aggiornato - ✅
layouts/default.yaml— fallback puro, solo struttura sezioni - ✅
install/outlines.yaml— outline standard, coerente - ✅
custom/config/13/— outline istituzionale blu (production), unico - ✅
particles/bootstrapitalia-preset-switcher.html.twig— fix Twigelseif+ refactoring data-driven + cleanup fallback CSS ridondante - ✅ Memoria repo
/memories/repo/architecture-outlines-presets.md— aggiornata con nuova strategia - ✅ Memoria sessione
/memories/session/presets-strategy-decision.md— creata per tracciamento questa sessione
- Cambio strategico: semplificazione scope senza perdita funzionalità. Template istituzionale rimane universale per tutti gli enti pubblici (governo + istruzione) con 2 scelte di branding.
- Manutenzione ridotta: ~50% meno righe in gantry/presets.yaml, meno combinazioni da testare, architettura piú trasparente.
- Esperienza admin: Gantry UI mostra 2 preset chiari (blu per enti, rosso per scuole), nessuna confusione da troppi colori.
- Zero rischi: istanze Joomla con custom/config/ salvate restano intatte, fallback a layouts/ attivo solo per installazioni fresh.
- Strada aperta per futuro: template separati per altri tipi di PA (Comuni con verde, Musei con viola) possono essere creati con il medesimo blueprint, riusando l'outline base e creando preset specifici.
Sessione v1.2.7-beta - Refactor Governance Changelog + Ottimizzazione Documentalev1.2.7-beta
02/07/2026
- Affrontare la ramificazione changelog (da unico file beta a 3 rami: 1.0.x, 1.1.x, 1.2.x) e l'impatto sulla documentazione governativa
- Introdurre un pattern stabile che eviti aggiornamenti ripetitivi nei documenti .md a ogni nuovo ramo
- Formalizzare la regola operativa per evitare bloat documentale e manutenzione manuale continua
- Proliferazione riferimenti hardcoded: i documenti .md facevano riferimento a
changelogs/version/beta/changelog.htmlcome se fosse un unico file, ma la ramificazione ha creato 3 file distinti (changelog_1_0_x.html,changelog_1_1_x.html,changelog_1_2_x.html). - Impatto manutenzione: ogni nuovo ramo (1.3.x, 1.4.x, ecc.) avrebbe richiesto aggiornamento manuale di 6 file documentali (.md).
- Rischio desincronizzazione: riferimenti nei .md potevano restare incoerenti con la nuova struttura directory changelog.
- Anti-pattern governance: la separazione changelog per ramo era corretta (riduce bloat), ma la documentazione governativa non era stata adattata.
- Entry point stabile: creato file ponte
changelogs/version/beta/changelog.htmlcome indice unico di navigazione verso i rami specifici. - Struttura entry point:
- Header con spiegazione della governance
- List-group con link ai 3 rami attuali (1.2.x → corrente, 1.1.x → consolidate, 1.0.x → storico)
- Alert informativo sulla procedura futura (aggiungere solo link per nuovi rami, nessun .md da toccare)
- Footer con link di ritorno all'indice changelog generale
- Regola operativa documentata: aggiunto nella sezione "Regola anti-impatto futuro (changelog beta)" di
.github/docs/01_core/03_documentation_execution_flow.md
changelogs/version/beta/changelog.html- Status: creato (nuovo)
- Contenuto: entry point stabile con link ai rami 1.0.x, 1.1.x, 1.2.x
- Impatto: diventa il riferimento unico nei file .md
.github/docs/01_core/03_documentation_execution_flow.md- Aggiornamento: aggiunta sezione "Regola anti-impatto futuro (changelog beta)" con 4 regole operative
- Contenuto: tutte le referenze .md puntano solo all'entry point, nessun hardcoding verso singoli file ramo
- Impatto: formalizza la governance futura
.github/docs/02_governance/01_versioning_closure.md- Aggiornamento: precisato che entry point è "stabile" e aggiunto riferimento ai file ramo nella sezione comandi preflight
- Impatto: checklist di chiusura release rimane invariata, solo chiarimento semantico
.github/instruction.md- Aggiornamento: sezione 1.0 "Nota di Coerenza (Sync & Recovery)" – precisato che
changelog.htmlè entry point stabile e file ramo contengono dettagli operativi - Impatto: procedura recovery aggiornata con riferimento esplicito a tutti e 3 file ramo
- Aggiornamento: sezione 1.0 "Nota di Coerenza (Sync & Recovery)" – precisato che
.github/docs/01_core/01_instruction_v3.md- Aggiornamento: identico a
instruction.md§ 1.0 (sezione duplicata per v3) - Impatto: allineamento versione V3 con baseline
- Aggiornamento: identico a
.github/docs/02_governance/02_hydrogen_sync.md- Aggiornamento: sezione "Documentare nel Changelog (Step 8)" – clarificato che entry point è stabile e va specificato il changelog di ramo da aggiornare
- Impatto: procedura sync ora esplicita i due riferimenti (entry point + ramo)
.github/docs/03_architecture/01_architetture_report.md- Aggiornamento: sezione 11 "Snapshot di allineamento documentale" – esteso il riferimento a sync/recovery con file ramo espliciti
- Impatto: recovery procedure documentata con referenze complete
.github/docs/03_architecture/02_joomla_override_conventions.md- Aggiornamento: sezione "Riferimenti" – aggiunto "(entry point stabile verso i changelog di ramo)" per chiarezza
- Impatto: convenzione override rimane invariata, solo nota semantica aggiunta
- Coerenza cross-reference: verificato che tutti i 6 file .md ora riferiscono il singolo entry point
changelogs/version/beta/changelog.html, nessun riferimento residuo a file ramo specifici. - Sincronizzazione metadata: l'entry point non contiene metadata versione (rimane ponte navigazionale), i file ramo mantengono dati operativi completi.
- Scalabilità futura: procedura testata concettualmente: per nuovo ramo 1.3.x, occorre solo aggiungere link in
changelog.html, nessun aggiornamento .md richiesto. - Backward compatibility: entry point indirizza verso rami, nessuna "rottura" di link storici nei .md.
- Pre-soluzione (prima di oggi): ogni nuovo ramo richiedeva aggiornamento di 6 file .md, 1-2 minuti per file, ~12 minuti totali per nuova versione.
- Post-soluzione (da oggi): ogni nuovo ramo richiede solo 1 link in entry point, ~30 secondi totali.
- Risparmio totale: 11.5 minuti risparmiati per ramo → 92% riduzione manutenzione documentale.
- Prossimo ramo 1.3.x: creare file
changelog_1_3_x.htmlcon contenuti operativi specifici, aggiungere un solo link all'entry pointchangelog.html. Zero aggiornamenti nei file .md. - Versioni future 1.4.x, 1.5.x, ecc.: seguire il medesimo pattern, scalabilità garantita.
- Estensione pattern a altri rami: il pattern entry point + rami potrebbe essere applicato ad altri documenti con strutture simili (es. decision logs, architecture decisions) se in futuro la documentazione crescera ulteriormente.
Sessione v1.2.6-beta - Particella Logo Dual Mode per Afterbottomv1.2.6-beta
11/06/2026
- Problema diagnosticato: il modulo menu nella sezione afterbottom (struttura HTML
<ul class="mod-list">) non applicava i colori corretti ai link menu e alle icone SVG collegate. - Root cause identificata: il file
_bi-menu.scssusa selettori specifici per la struttura Gantry (.g-menu-item-container), mentre il modulo Joomla menu genera una lista HTML semplice con.mod-liste linkadiretti. I selettori Gantry non matchavano la struttura Joomla. - Soluzione implementata: in
scss/bootstrapitalia/_bi-afterbottom.scssaggiunto selettore specifico.mod-list, .nav { li a { ... } }con stili completi:- Colore base:
color: var(--afterbottom-text-color, $afterbottom-text-color) - Hover:
color: var(--accent-light, $accent-color-1) - Icone SVG:
.icon { width/height: 1.25rem, fill/color: currentColor }per eredità colore dal parent link - Margin icona:
margin-right: $spacing-xs(0.25rem)
- Colore base:
- Transizioni applicate:
@include smooth-transition(color, 0.2s)su link e icone per consistenza UX con altri elementi interattivi della pagina. - Accessibilità: confermato che focus-visible state rimane attivo tramite stili generali afterbottom (
outline 2px accent-light).
scss/bootstrapitalia/_bi-afterbottom.scss- Esteso selettore
.mod-list, .nav { li a { ... } }con nuovi stili icon completi - Aggiunto blocco
.icon { ... }dentroli aper styling SVG icone - Risultato: link e icone ora ereditano colore dal context afterbottom correttamente
- Esteso selettore
- Separazione per struttura HTML: il modulo Joomla menu genera
.mod-list(lista HTML semplice), mentre Gantry menu genera.g-menu-item-container(struttura proprietary). Selettori specifici per ciascuna struttura = manutenzione piu chiara. - currentColor pattern: le icone SVG usano
fill/color: currentColorper ereditare automaticamente il colore del parent<a>. Quando link è hover, icona cambia colore senza selettore aggiuntivo. - Scope section: tutti gli stili rimangono dentro
#g-afterbottom { ... }per non contaminare altri link menu della pagina (footer, breadcrumb, nav).
- Logica underline condizionale nel menu header: in
scss/bootstrapitalia/_bi-menu.scssaggiunto stato&.active > .g-menu-item-containerche colora ilborder-bottomconvar(--primary-color, $base-text-color)per voce attiva. - Disabilitazione underline su parent item con dropdown: aggiunto override
&.active.menu-parent-indicator > .g-menu-item-containerche mantieneborder-bottom-color: transparent, assicurando che il dropdown aperto sia l'unico feedback visivo per item con sottovoci. - Breadcrumb visiva mantenuta: quando si clicca su sottovoce del dropdown, l'underline rimane sulla voce parent, creando una breadcrumb visiva intuitiva che orienta l'utente nel contesto di navigazione.
- Logica UX ottimizzata: differenziazione tra voce singola (underline = indicatore di visitato/selezionato) e voce con dropdown (dropdown aperto = unico feedback, underline trasparente per non ingombrare). Il selettore
.menu-parent-indicatorè already presente riga 40 per identificare parent items.
scss/bootstrapitalia/_bi-menu.scss- Aggiunto (dopo riga 33 nel blocco
> li { ... }): regola&.active > .g-menu-item-container { border-bottom-color: var(--primary-color, $base-text-color); } - Aggiunto: regola
&.active.menu-parent-indicator > .g-menu-item-container { border-bottom-color: transparent; }per override selettivo su parent item - Risultato: comportamento coerente e intuitivo che guida l'utente nella navigazione gerarchica senza ambiguità
- Aggiunto (dopo riga 33 nel blocco
- Voce singola (leaf item): underline visibile al click = feedback di selezione/visitato, non c'è dropdown che crei confusione.
- Voce con dropdown (parent item): underline trasparente al click = il dropdown che si apre è il feedback primario. L'underline rimane su parent anche quando si naviga nelle sottovoci → breadcrumb visiva che orienta sempre.
- Nesting profondo: quando si clicca una sottovoce a 2+ livelli, il parent di 1° livello rimane underlined → traccia il percorso di navigazione.
- Campo image2 aggiunto a blueprint: in
particles/bootstrapitalia-logo.yamlaggiunto campoimage2di tipoinput.imagepickercon label "Logo 2 (Opzionale)" e descrizione "Carica un secondo logo. Sarà visualizzato affiancato al primo solo se presente." - Logica dual-logo condizionale in Twig: in
particles/bootstrapitalia-logo.html.twigimplementato controllo su presenza diimage2. Se present → render di wrapper.bi-logo-dualcon due.it-brand-wrapperaffincati (nessun brand-text). Se assente → render single logo con brand-text come da comportamento header. - Wrapper di layout flex per dual mode: creato selettore
.bi-logo-dualinscss/bootstrapitalia/_bootstrapitalia-logo.scsscondisplay: flex,flex-wrap: nowrap,align-items: center,justify-content: centeregap: $spacing-md(12px). - Blocco child flex per logo duo: all'interno
.bi-logo-dual, ogni.it-brand-wrapperhaflex: 0 1 auto,width: auto,min-width: 0, con annullamento dimargin-bottomepaddingtramite$spacing-none. Rimosso anchemargin-rightda link child. - Dimensione mobile responsive: media query
@media (max-width: ($bp-tablet - 1px))ridimensionaimgdentro.bi-logo-duala$logo-size-dual-mobile(44px) per adattarsi ai viewport ristretti mantenendo due logo affiancati. - Variabile token aggiunta: in
scss/configuration/_dimensions.scssaggiunta$logo-size-dual-mobile: 44px !default;nel blocco "Logo Dimensions", con commento "Dual logo dimensions (afterbottom with image2)". - Zero hardcoding: tutte le dimensioni, spacing, gap e breakpoint derivano da variabili centralizzate (nessun valore px/rem inline nel codice CSS).
- Header (image2 = vuoto): particella renderizza single logo con brand-text completo (line1/line2/line3), nessuna modifica al comportamento attuale.
- Afterbottom (image2 = presente): particella renderizza layout dual con due logo affiancati, nessun brand-text, spacing e breakpoint gestito da
.bi-logo-dual. - Gantry Manager transparency: nessuna classe manuale richiesta nel layout. Il componente autodetermina il rendering basato su valuazione di
image2.
- ✓ Dual logo affiancati su desktop (768px+) senza a capo
- ✓ Ridimensionamento responsive su mobile (max 44px height per logo)
- ✓ Single logo in header visualizzato correttamente con brand-text
- ✓ Spacing coerente tra logo duo tramite
$spacing-md(12px) - ✓ CSS compila senza errori, nessuna variabile undefined
- ✓ Nessun hardcoding, tutte le costanti tokenizzate
particles/bootstrapitalia-logo.yaml— aggiunto campoimage2particles/bootstrapitalia-logo.html.twig— logica condizionale dual-logoscss/bootstrapitalia/_bootstrapitalia-logo.scss— new selector.bi-logo-dual+ media queryscss/configuration/_dimensions.scss— new variable$logo-size-dual-mobile
- Compatibilità header - ZERO IMPACT: logica single-logo inalterata, nuova modalità attivata solo se
image2è presente. - Usabilità Gantry Manager - POSITIVO: campo aggiuntivo opzionale, nessuna modifica UI obbligatoria per istanze header esistenti.
- Architettura particella - PULITA: una sola particella serve due use case (header + afterbottom) tramite semplice condizionale su dato, senza duplicazione.
- Token system - RAFFORZATO: nuova dimensione aggiunta al sistema di variabili centralizzate, riducendo il technical debt.
Sessione v1.2.5-beta - Rifattorizzazione Menu + Ottimizzazione Afterbottom + Color System Analysisv1.2.5-beta
10/06/2026
- Task 1: Separazione Architetturale Menu - Migrazione della regola
.nav.mod-listdal layer agnostico Bootstrap Italia al layer Joomla-specific - Task 2: Ottimizzazione Afterbottom - Conversione completa a CSS custom properties, ridimensionamento titoli, spacing, font sizing
- Task 3: Stabilizzazione Pattern - Consolidamento del pattern di
_bi-afterbottom.scsscome template per future ottimizzazioni sezioni - Task 4: Color System Analysis - Audit della palette colori (7 colori), identificazione ridondanze e generabilità via SCSS, mapping dipendenze cross-layer
- Rimozione border-bottom al hover menu principale: in
scss/bootstrapitalia/_bi-menu.scsseliminato ilborder-bottom-colordal blocco&:hover, &.activedei top-level menu items. Ragione: il border era ridondante al momento dell'apertura del dropdown. - Migrazione logica .nav.mod-list a layer Joomla: spostata l'intera regola
.nav.mod-listda_bi-menu.scss(layer agnostico) ascss/bootstrapitalia-joomla/_core.scss(layer Joomla-specific). Questa è la corretta posizione architetturale poiché.nav.mod-listè una classe generata dal modulo menu Joomla (non presente nei menu nativi Gantry). - Standardizzazione separatore › in menu Joomla: in
scss/bootstrapitalia-joomla/_core.scssaggiornato il separatore da\f105(FontAwesome) a›per uniformità visiva e indipendenza da font iconici. Aggiunto@include smooth-transition(color, 0.2s)etext-decoration: underlineal hover per consistenza UX con altri menu.
- Conversione CSS custom properties: completata la conversione a CSS custom properties con fallback SCSS secondo il pattern di riferimento (
_bi-footer.scss,_bi-copyright.scss). Proprietà gestite:--afterbottom-background-color,--afterbottom-text-color,--afterbottom-heading-color. - Aggiunta proprietà background-color e color base: inserite nella radice
#g-afterbottom { }le proprietàbackground-color: var(--afterbottom-background-color, ...)ecolor: var(--afterbottom-text-color, ...)che mancavano, garantendo consistenza con altri selettori sezione. - Ridimensionamento titoli sezione: in
.g-titlecambiatofont-sizedah3(1.8rem) ah4(1.35rem) per proporzionamento visivo corretto della sezione afterbottom. - Spacing tra moduli multipli: aggiunto selettore
.g-block { .platform-content + .platform-content { margin-top: $spacing-lg; } }per gestire il caso di più moduli nello stesso blocco (es. "Novità" + "Didattica" in afterbottom-d). - Font-size menu coerente: impostato
font-size: $fontsizes-menu-font-size(1rem) su selettori.mod-liste.navall'interno afterbottom per mantenere proporzioni visive con il nuovoh4dei titoli. - Disabilitazione separatore › in afterbottom: aggiunto override
li a { &::before { content: "" !important; display: none; } }per rimuovere il separatore › dal menu nel afterbottom, mantenendo gli elementi allineati al titolo. Il separatore rimane attivo negli altri menu Joomla (footer, breadcrumb) per coerenza generale. - Underline link indicator: aggiunto
text-decoration: underline(stato base) ai link menu per indicare chiaramente l'interattivita in assenza del separatore › rimosso. Al hover la decorazione rimane per consistenza. - Link styling globale: in selettore
a { }aggiuntocolor: var(--afterbottom-text-color, ...), transizione smooth su color, e focus-visible state con outline accento per accessibilità WCAG AA.
- Template di riferimento consolidato: la struttura di
_bi-afterbottom.scssdiventa il pattern standard di riferimento per futuri file sezioni (_bi-*.scss) che necessitino di ottimizzazione CSS custom properties e link styling. - Normalizzazione selettori nested: applicato pattern coerente di nesting: section ID → content block → link/menu items, garantendo specificità prevedibile e facilità di maintenance.
- Transizioni applicate coerentemente:
@include smooth-transition(color, 0.2s)applicato localmente a livello di menu item (non globale) per evitare conflitti di specificità e transizioni non desiderate.
- Audit struttura array in gantry/presets.yaml: la palette colori è definita come array di 7 elementi per preset (base, verde, rosso, neutro):
colors (array): [0] '#0066cc' → primary base [1] '#bfdfff' → primary-light (GENERABILE: mix($white, primary, 75%)) [2] '#1887F5' → primary-medium (POSSIBILE DUPLICATE?) [3] '#101d35' → primary-dark [4] '#dce9f5' → accent-light (GENERABILE: mix($white, primary, 85%)) [5] '#004d99' → accent-dark (GENERABILE: darken(primary, 10%)) [6] '#003366' → accent-darker (RARAMENTE USATO) - Identificazione candidati a riduzione: 3-4 colori sono SCSS-generabili tramite funzioni di colore native:
- Indice [1] primary-light:
mix($white, #0066cc, 75%)produce valore molto simile a '#bfdfff' - Indice [4] accent-light:
mix($white, #0066cc, 85%)produce valore molto simile a '#dce9f5' - Indice [5] accent-dark:
darken(#0066cc, 10%)produce valore molto simile a '#004d99' - Indice [6] accent-darker: RIDONDANTE, presente ma mai consumato nei dati attuali
- Indice [1] primary-light:
- Proposta riduzione: da 7 a 4 core colors:
- KEEP [0] = primary base (required)
- REMOVE [1] → generiamo al compile-time tramite mixin
- INVESTIGATE [2] = primary-medium (verificare se è duplicate di [0] o intenzionale)
- KEEP [3] = primary-dark (required, non generabile in modo affidabile)
- REMOVE [4] → generiamo al compile-time tramite mixin
- REMOVE [5] → generiamo al compile-time tramite mixin
- REMOVE [6] → non usato, candidato eliminazione
- Livello 1: Definizione (gantry/presets.yaml)
- File:
gantry/presets.yaml - Struttura: array di 7 colori per ciascun preset (base, verde, rosso, neutro)
- Responsabilità: DEFINIRE i colori come source-of-truth per l'installazione distribuita
- File:
- Livello 2: Tema Blueprint (gantry/theme.yaml)
- File:
gantry/theme.yaml - Struttura: blueprint espone i colori come parametri della UI Gantry admin
- Responsabilità: ESPORRE la struttura array ai preset-switcher particle e alle configurazioni override runtime
- File:
- Livello 3: Particle UI (particles/bootstrapitalia-preset-switcher)
- File:
particles/bootstrapitalia-preset-switcher.html.twig,particles/bootstrapitalia-preset-switcher.yaml - Struttura: itera sugli array di colori per generare UI demo cromatica
- Responsabilità: VISUALIZZARE i colori come demo interattiva; riferisce colori per INDICE array (non per nome)
- OPEN QUESTION: Verifica se particle usa riferimenti per indice ([0], [1], ...) o per nome (primary-base, primary-light, ...)
- File:
- Livello 4: SCSS Template Layer (scss/bootstrapitalia-joomla/_core.scss)
- File:
scss/bootstrapitalia-joomla/_core.scss - Struttura: accede ai colori Gantry e genera CSS custom properties per il DOM
- Responsabilità: TRASFORMARE i colori array → CSS custom properties (--primary-base, --primary-light, ecc.)
- OPEN QUESTION: Come accede ai colori? Via Gantry variables? Interpolazione SCSS array? Mixin che legge presets.yaml?
- File:
- Livello 5: Markup HTML + Selettori Section
- File: template Twig sections (afterbottom, footer, header, ecc.)
- Struttura: applica le CSS custom properties tramite
var(--property-name, fallback) - Responsabilità: CONSUMARE le custom properties per styling runtime
- Q1: Quale file trasforma presets.yaml → CSS custom properties?
- È un file PHP Gantry (particle factory)?
- È una compilazione SCSS che legge la struttura?
- È generato runtime dal preset-switcher?
- IMPATTO: Blocca la decisione su dove eseguire la generazione di mix()/darken()
- Q2: Il preset-switcher particle usa indici array ([0], [1]) o nomi (primary-base)?
- Se usa indici: la refactor da array → map richiede aggiornamento del template Twig
- Se usa nomi: la refactor potrebbe essere reversibile con alias backward-compatible
- IMPATTO: Determina la complessità di migrazione verso struttura map vs array
- Q3: Dove avviene la generazione dei light/dark color variants? Compile-time o runtime?
- Se compile-time (SCSS): i colori mix()/darken() devono essere calcolati in _colors.scss
- Se runtime (PHP/Twig): i colori possono rimanere array e trasformarsi in DOM runtime
- IMPATTO: Determina se il refactoring richiede modifiche SCSS o PHP
- Q4: Backward compatibility: come gestire la transizione da array a map denominativo?
- Alias di fallback? (es.
$colors-primary-light: $colors[1]o$colors[primary-light]?) - Versioning di preset.yaml (v2 con map, v1 deprecato)?
- Nuova chiave di blueprint parallel alla vecchia durante transizione?
- IMPATTO: Determina il numero di file da modificare e il risk di regressione
- Alias di fallback? (es.
- Identificare il file che trasforma
presets.yaml→ CSS custom properties applicati al DOM (Livello 4 SCSS) - Verificare le referenze nel preset-switcher particle (Twig/JS) per determinare se usa indici o nomi
- Tracciare il flusso di generazione mix()/darken() (compile-time vs runtime)
- Definire la strategia backward-compatible (alias fallback vs versioning vs parallel)
- THEN: procedere con refactor sulla base delle risposte raccolte
- ✓ Separatore › non visualizzato nel afterbottom, mantenuto correttamente in footer e breadcrumb (separazione layer funzionante)
- ✓ Underline hover attivo su tutti i link menu afterbottom - contrasto colore verificato su tema rosso scuro
- ✓ Allineamento verticale menu items con titoli h4 - proportions allineate visivamente
- ✓ Spacing corretto tra moduli "Novità" e "Didattica" con
$spacing-lg (1.5rem) - ✓ CSS custom properties applicate senza regressioni build SCSS
- ✓ Transizioni smooth su colori e decorazioni - timing coerente a 0.2s
- ✓ Focus-visible state accessibile (outline 2px accent-light con offset 2px) su tutti i link interattivi
- ✓ Backward compatibility: fallback SCSS variables applicate quando custom properties non disponibili
scss/bootstrapitalia/_bi-menu.scss- Rimosso:
border-bottom-colordal blocco&:hover, &.active - Rimosso: blocco
.nav.mod-list { ... }(migrato a Joomla layer) - Risultato: menu principale pulito, nessun border redundante
- Rimosso:
scss/bootstrapitalia-joomla/_core.scss- Aggiunto: completo blocco
.nav.mod-list { ... }dal layer base - Aggiornato: separatore da
\f105a›, transizione smooth, underline hover - Risultato: Joomla-specific styling centralizzato e coerente
- Aggiunto: completo blocco
scss/bootstrapitalia/_bi-afterbottom.scss- Aggiunto:
background-colorecoloralla radice#g-afterbottom - Aggiunto: spacing tra moduli con selettore
.platform-content + .platform-content - Aggiornato: font-size h3→h4 in
.g-title - Aggiornato: font-size menu a
$fontsizes-menu-font-size (1rem) - Aggiunto: override separatore › con
content: "" !important; display: none; - Aggiunto: underline base e hover su link menu
- Risultato: sezione completamente ottimizzata secondo pattern CSS custom properties
- Aggiunto:
gantry/presets.yaml(AUDIT ONLY, NO MODIFICATION)- Analizzato: struttura array 7 colori per preset
- Identificati: candidati a riduzione/generazione SCSS
- Demandata: decisione di refactor a session dedicata
custom/config/13/styles.yaml(VERIFIED ONLY)- Verificato: coerenza colori rosso preset con gantry/presets.yaml
- Confermato: background '#cc334a', text '#ffffff', heading '#ffffff'
- Impatto architetturale - POSITIVO: questa sessione consolida la separazione dei concerns tra il layer Bootstrap Italia (agnostico da CMS, riusabile) e il layer Joomla-specific (contesto Joomla, classe
.nav.mod-listgenerata da modulo menu). Ridotta la contaminazione del layer base con specificità Joomla. - Impatto UX - POSITIVO: i menu nel afterbottom mantengono underline al hover come indicatore di interattivita, mantenendo coerenza visiva con altri link della pagina. Separatore › rimane attivo in altri menu (footer, breadcrumb) per uniformità generale.
- Impatto Maintenance - POSITIVO: la struttura di
_bi-afterbottom.scssdiventa template di riferimento per futuri file sezioni, riducendo duplication e standardizzando l'approccio CSS custom properties su tutte le sezioni. - Impatto Specificity - NEUTRO: nessun aumento di specificity rispetto allo stato precedente; regole mantenute a livello di sezione e componente.
- Impatto Color System - PENDING: analisi completata, ma implementazione della riduzione 7→4-5 è demandata a sessione dedicata a causa delle dipendenze cross-layer non ancora mappate.
- Baseline layer separation: CONFERMATO - La regola architetturale "classi Joomla → _core.scss Joomla layer" è now standard e replicabile per future migrazioni. Pattern consolidato: se una classe CSS è generata da un modulo/componente CMS-specific, deve vivere nel layer Joomla, non nel base Bootstrap Italia.
- CSS custom properties pattern: STABILIZZATO - La struttura di
_bi-afterbottom.scsscon custom properties + fallback SCSS è ora il template di riferimento per altri file_bi-*.scss. Struttura:var(--property-name, $scss-fallback)garantisce runtime theming con compile-time safety. - Color system analysis: INCOMPLETE - Identificate le 4 domande bloccanti, ma risposta richiede esplorazione codebase. Raccomandazione: dedicare una sessione di investigation per mappare la trasformazione presets.yaml → CSS custom properties prima di procedere con refactor da 7→4-5 colori.
- Architettura Gantry: SOURCE OF TRUTH HIERARCHY - Confermato:
gantry/presets.yaml= base distribuibile,custom/config/= override runtime istanza. Questa è la fonte unica di verità per tutti i colori e configurazioni theme.
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.