CHANGELOG — pwa (stabile)
v3.1 — Portabilità: solo percorsi relativi
- Stessa correzione applicata al ramo beta 4.0b1: manifest, index.html, finali.html e sw.js ora usano esclusivamente percorsi relativi
- L’app funziona correttamente a qualsiasi percorso di pubblicazione (dominio, sottocartella singola o nidificata, con o senza cartella
pwaintermedia) - Rimossa dipendenza da
save/demo.jsonnella pre-cache del Service Worker (mai usata dal codice, assumeva profondità di cartelle non garantita)
v3.0 — Rilascio stabile (promozione da pwa-beta 3.0b40)
Primo rilascio con redesign completo Material Design 3 + Noto Sans. Per il dettaglio delle 40 versioni beta vedi pwa-beta/CHANGELOG.md.
Principali novità rispetto alla v2.11.5
- Redesign completo Material Design 3: token CSS per tema chiaro/scuro/auto
- Font Noto Sans (con fallback offline via Service Worker)
- Calendario: blocchi per turno con intestazione campo, slot vuoti con orario
- Designazioni: cerchietti gruppo colorati, btn-swap uniforme
- Finali: drag & drop, conflitti rilevati, checkbox Definitivo
- Classifica: algoritmo a gruppi con spareggio 3-way corretto (quoziente tra le N squadre pari)
- Stampa: 4 stampe distinte (per turno, gironi completo, finali, risultati)
- Sync GitHub: caricamento progressivo lista file
- Notifiche: sistema unificato in alto (tipo violazione-item MD3)
- SW: ciclo di vita completo con skipWaiting e aggiornamento automatico
CHANGELOG — Gestione Competizioni Baskin
finali.html
v2.11.5 — Orario 🕐 nel badge arbitri
- Badge arbitri: aggiunto orario con icona 🕐 accanto al turno (es. “Venerdì Pomeriggio 🕐 15:00”)
- Confermato: tutte le stampe (gironi per turno, gironi completo, finali) hanno già 🕐
v2.11.4 — Icona 🕐 negli orari delle stampe
- Aggiunta icona orologio 🕐 prima di ogni orario in tutte le stampe (designazioni gironi per turno e complete, finali)
v2.11.3 — Fix orari: sorgente dati e sincronizzazione
- Root cause:
aggiornaOrarioPartitaaggiornavacalSlotsma nonstato.calendario.turni(usato dalle stampe) aggiornaOrarioPartita: aggiorna ora anchestato.calendario.turniaggiornaOrario(default): propaga anche astato.calendario.turni- Aggiunto helper
syncOrariCalendario(): dopo import/sync allinea orari dacalSlots→stato.calendario.turni - Chiamato dopo
importaStatoeimportaJSONnella sezione Designazioni
v2.11.2 — Fix orario coverage
importaStato: ripristinoorariDefaultdalla sezione DateimportaJSON: ripristinoorarioF34/F12dalla sezione Finali- Orari finali presenti in tutte le stampe (stampaPDF, stampaPDFTurno)
- Audit completo: tutti i percorsi export/import/stampa coprono gli orari
v2.11.1 — Fix orario duplicato in designazioni
- Rimossa label statica orario
🕐 HH:MMdal tab Designazioni (rimane solo l’input nel Calendario)
v2.11 — Orari partite e finali (rilasciata come 2.10.12, poi rinominata)
- Orario modificabile inline in ogni slot del CALENDARIO (default da tab Date)
- Orario mostrato nel tab DESIGNAZIONI accanto a ogni partita
- FINALI: due input orario diretti nel tab (Finale 3°-4° e Finale 1°-2°)
- Orari in tutte le stampe: designazioni per turno, designazioni gironi completo, finali
- Orari salvati nel JSON/sync (in
calendario[t][c][p].orarioefinali.orarioF34/F12)
v2.10.11 — Fix tab Finali e Risultati disabilitati
impostaGironi(): abilita anche Finali e RisultatiimportaStato(): abilita Finali e Risultati quando i gironi sono presenti nel JSON- INIT: all’avvio riabilita tutti i tab in base allo stato caricato dalla sessione
- Finali sempre accessibili per composizione manuale (nessun requisito sui risultati)
v2.10.10 — Fix sync banner e turniConfermati
- Pull sync: sezione Opzioni non veniva rilevata (cercava
data['opzioni']invece didata.bannerImage) importaStatoeimportaJSON:turniConfermatinon veniva ripristinato dalla sezione Designazioni- Ora banner e flag definitivi/provvisori vengono correttamente caricati da pull e da JSON
v2.10.9.1 — Bugfix Cerano
- Corretto nome squadra: Cerrano → Cerano, ST Valle d’Aosta/Piemonte/Liguria → Piemonte/Valle d’Aosta/Liguria
v2.10.9 — Tab 4.Finali e Risultati disabilitati
- Finali e 📊 Risultati disabilitati finché i gironi non sono impostati
- Si abilitano in
impostaGironi()assieme a Calendario - Si disabilitano in
resetApp()assieme a Calendario e Designazioni - Si riabilitano all’import se presenti i gironi
v2.10.8.1 — Fix reset nomiArbitri
- Rimosso doppio azzeramento
nomiArbitriinresetApp()che sovrascriveva i nomi fittizi
v2.10.8 — UX e fix reset
- Tab 4. Finali spostato prima di 📊 Risultati
- Pulsante ✕ Scollega repo aggiunto nel tab Sync
resetApp(): tutti igetElementByIdcon null-guardresetApp()resetta anchefinali-stamp-area,nomiArbitri; non toccasyncConfig
v2.10.7.1 — Fix pulsante stampa risultati
- Pulsante Stampa Risultati & Classifica aggiunto correttamente in fondo al tab (era scomparso perché innerHTML cancellava il nodo aggiunto con appendChild)
v2.10.7 — Minor fixes
- Designazioni: pulsante “Tutti” rinominato “Gironi”
- Finali: pulsante stampa rinominato “Finali”, rimosso pulsante Risultati & Classifica
- Sync: fix ordinamento lista file dal più recente —
_tsnon veniva salvato
v2.10.6 — Minor UX fixes
- Pulsante Stampa Risultati & Classifica spostato in fondo al tab (come Designazioni)
- Tab Finali: pulsante Designazioni Finali + Risultati & Classifica in fondo
- Tab Arbitri: rimosso pulsante PDF Designazioni, rimane solo Badge Arbitri
v2.10.5 — Fix doppioni nel pool partite
- Aggiunto helper
raccogliTuttePartite()con deduplicazione per id distribuisciAuto()esvuotaCalendarioManuale()usano il nuovo helperrenderCalBuilder()deduplica il pool prima di renderizzare (safety net)- Eliminato bug per cui svuotare il calendario o ridistribuire poteva generare partite doppie
v2.10.4 — Sezione Opzioni = solo banner
- Sezione Opzioni contiene solo
bannerImage(e future opzioni grafiche) turniConfermatirimane nella sezione DesignazioniorariDefaultrimane nella sezione Date- Compatibilità retroattiva con JSON v1 (bannerImage alla radice)
v2.10.3 — Sezione Opzioni e fix export/import
- Nuova sezione Opzioni in Import/Export e Sync: include banner stampe e conferme turni
bannerImagespostato dalla sezione Palestre alla sezione OpzioniturniConfermatiincluso sia in Opzioni che in DesignazioniorariDefaultincluso nella sezione DatecampoIdeorarioinclusi nel calendario esportato- Fix rilevamento sezione Opzioni nei JSON importati da versioni precedenti
- Versione export JSON:
_versione: 2
v2.10.2 — BASEDIR per multi-istanza
- Aggiunta costante
BASEDIR(root repo) separata daBASE(cartella istanza) in tutti e tre i file - Per creare
pwa-beta: copiarepwa/, cambiareBASE = BASEDIR + '/pwa-beta'insw.js,index.htmlefinali.html save/demo.jsoneconfig/referenziati tramiteBASEDIR(condivisi tra istanze)
v2.10.1 — README e CHANGELOG
- README completamente riscritto con tutte le funzionalità
- CHANGELOG.md creato in
pwa/con storia completa
v2.10 — Technical update: struttura progetto
- Tutti i file app spostati in
pwa/(finali.html, sw.js, versions.json) - Costanti di configurazione (BASE, VERSION, CACHE_NAME) in cima a ogni file
sw.jsriscritto con versione nel nome cache (gestione-competizioni-sw-2.10).gitignoreaggiornato per nuova struttura
v2.9.7.4 — Fix reset btn-pdf
resetApp()cercavabtn-pdfebtn-badgerimossi dalla tabbar in 2.9.7
v2.9.7.3 — Fix badge versione
const VERSIONrimasto a 2.9.6.1; ora tutte le sorgenti versione allineate
v2.9.7.2 — Fix badge versione (badge HTML)
- Badge HTML hardcoded non aggiornato; ora coincide con
VERSIONJS
v2.9.7.1 — Fix versione in launcher
- Launcher mostrava versione 2.9.1; aggiunto
KNOWN_VERSIONSper evitare falsi “tutto aggiornato”
v2.9.7 — UX miglioramenti
- Pulsanti PDF/Badge rimossi dalla tabbar (solo contestuali)
- Stampa per turno: Dom. Finali spostata nel tab Finali; “Gironi” al posto di “Tutti”
- Pulsante Stampa Risultati & Classifica nel tab Risultati
- Tab Risultati e Finali scambiati di posizione
- Ordine cronologico nelle partite dei risultati (segue il calendario)
- Lista pull sync ordinata dal più recente al più vecchio
v2.9.6 — Stampe complete
- Tab ⚙ Opzioni con banner stampe e metodo di stampa
- Footer PDF: nome app + versione invece di testo generico
- Riepilogo arbitri sempre incluso nelle stampe per turno (non più condizionale)
- Stampa Designazioni Finali con riepilogo arbitri completo (finali + gironi)
- Pulsante stampa finali nel tab Finali
v2.9.5.3 — Fix _campoIdCounter e banner timing
_campoIdCounternon dichiarato → fix standalone declaration- Banner non visibile in Opzioni →
aggiornaBannerUI()chiamata anche inshowTab('opzioni')
v2.9.5.2 — Sync persistente
- Config sync spostata da
sessionStoragealocalStorage - Pulsante ✕ Scollega repo
v2.9.5.1 — Fix stato init
turniConfermatiebannerImagemancavano dall’oggettostatoiniziale
v2.9.5 — Banner e persistenza
- Banner stampe caricabile in base64, salvato in DB/JSON
- Tab ⚙ Opzioni dedicato
- Config sync in
localStorage(persiste tra sessioni e crash) - Pulsante ✕ Scollega repo
- Tutti i fallback per import JSON da versioni precedenti
v2.9.4.1 — Fix template literal
- Caratteri
$escapati (\$) nel turno-sep rendevano il template come testo grezzo
v2.9.4 — Checkbox conferma turno
- Checkbox Provvisorie/Definitive per ogni turno nel tab Designazioni
- Nota provvisoria/definitiva in ogni stampa
- Stampa per singola mezza giornata (Ven. Pom., Sab. Matt., Sab. Pom.)
- Campo ID progressivo nelle palestre (campo_1, campo_2…)
- Campo snapshot nelle designazioni: nome campo al momento dell’assegnazione
v2.9.3.2 — Fix annotazione campo drag
campoIdnon veniva annotato nel drop manuale cella→cella- Aggiunta annotazione in tutti e tre i casi: pool→cella, sposta, swap
v2.9.3.1 — Fix _campoIdCounter
- Variabile non dichiarata; reset non ripristinava contatore e
turniConfermati
v2.9.3 — Campi e città
- ID progressivo per ogni palestra (campo_1, campo_2…)
- Coerenza campo:
campoIdsalvato in ogni slot del calendario campoInfo(): risolve campo per ID, fallback per indice- Città accanto al nome squadra in tutte le schermate e stampe (se diversa)
- Downgrade detection nel launcher: alert + conferma prima di applicare
v2.9.2 — Downgrade
- Rilevamento downgrade nel launcher: confronto semantico versioni
- Alert esplicito con lista versioni attuali → versioni repo
v2.9.1 — Bugfix regex
- Fix regex base64 con newline letterale nel pull sync
v2.9 — Sezioni import/export
- Sezioni assenti nel JSON mostrate grigie/disabilitate in Import/Export e Sync
v2.8 — Pull banner sync
- Pull dal banner con feedback visibile a schermo
- Usa tutte le sezioni disponibili (non dipende dal tab Sync aperto)
v2.7 — Nome file sync
- Timestamp automatico nel nome file sync, modificabile prima del push
- Formato:
YYYYMMDD-HHMMSS-RRRRRR-gestione-competizioni.json
v2.6 — Sezioni Sync
- Checkbox sezioni indipendenti nel tab Sync (separati da Import/Export)
v2.5 — Gruppo (ex Fascia)
- Rinominato
fascia→gruppoin tutto il codice, dati, UI e CSS
v2.4 — Fix reset
nomiArbitrireinizializzati su tutti gli arbitri dopo reset- Guard
nullsuclassListinshowTab
v2.3 — Menu
- Pulsante ⌂ Menu per tornare al launcher
v2.2 — Reset
- Pulsante ↺ Reset ai dati di esempio
v2.1 — Utente sync
- Campo
usernei commit sync per identificare chi pubblica
v2.0 — Sync collaborativo
- Scelta utente se caricare versione remota all’avvio (no caricamento forzato)
- Banner avviso se repo ha versione più recente della sessione locale
v1.9 — Avvio intelligente
- Caricamento automatico ultima sessione locale
- Avviso se repo sync ha file più recente
v1.8 — Sincronizzazione GitHub
- Push/pull JSON su repository privato con token PAT
- Lista file repo con data e autore commit
v1.7 — Versione e aggiornamento
- Badge versione nell’header del modulo
- Controllo aggiornamento via
versions.json
v1.6 — Fix caratteri speciali
- Helper
esc()per escape sicuro nei drag & drop - Fix nomi squadre con virgolette
v1.5 — Fix DnD pool
- Pool partite con indice numerico nei data-attributes
v1.4 — Fix DnD calendario
- Drag & drop calendario via data-attributes (fix SyntaxError)
v1.3 — Fix input
oninput→onchange+onblursu arbitri e palestre
v1.2 — Modifiche offline
- Modifiche manuali integrate nel codice base
v1.1 — IndexedDB
- Storico sessioni con IndexedDB
- Salvataggio automatico debounced
v1.0 — Release iniziale
- Gironi (sorteggio e DnD)
- Calendario (distribuzione automatica e manuale)
- Designazioni arbitrali con backtracking esaustivo
- Vincoli: gruppo, conteggio, territoriali (con deroghe per livelli)
- Risultati e classifica (V=3, S=1, spareggio)
- Finali (3°-4° e 1°-2°)
- Import/Export JSON per sezioni
- Stampa PDF via HTML + browser