Nessun cambio di funzionalità: solo resa, accessibilità e correzioni al layout su iPhone. - Aggiunge `viewport-fit=cover`: senza, su iOS `env(safe-area-inset-*)` valeva 0 e il margine per la barra gesture già presente nella bottom nav non aveva effetto. Aggiunge il margine superiore su hero, PageHeader e header dello scout, che in modalità standalone finivano sotto il notch. - Attiva il tema scuro sulla preferenza di sistema e ne riscrive i valori: l'accento resta il rosso del brand (prima diventava grigio-blu) e i token semantici che mancavano ora ci sono. `theme-color` ha una tinta per tema. - Sposta il feedback dal rilascio alla pressione su Button, bottom nav e comandi principali; aggiunge l'anello di focus da tastiera in `@layer base`, che mancava su tutti i bottoni scritti a mano fuori da components/ui/. - Rende la bottom nav una superficie traslucida con sfumatura di scorrimento al posto della riga netta, alleggerisce il velo dei drawer e sostituisce l'alone rosso delle ombre con ombre neutre. - Introduce una scala tipografica in rem con crenatura e interlinea per taglia, al posto dei 109 `text-[Npx]` fissi che non scalavano con l'impostazione di testo del sistema. - Porta a 44px le aree di tocco dei comandi piccoli, mostra uno scheletro di pagina al posto della schermata bianca in home e profilo, conserva le dissolvenze con movimento ridotto e aggiunge il supporto a `prefers-reduced-transparency` e `prefers-contrast`. - Anima l'apertura delle sezioni a tendina con Radix Collapsible, già fra le dipendenze, al posto di un montaggio secco. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6.5 KiB
6.5 KiB
Changelog
Tutte le modifiche significative del progetto vengono registrate in questo documento, in ordine dalla più recente. L'elenco delle funzionalità disponibili e previste non si ripete qui: sta in ROADMAP.md.
Versione attuale — agosto 2026
Rifinitura dell'interfaccia (settembre 2026)
Nessun cambio di funzionalità: solo resa, accessibilità e correzioni al layout su iPhone.
- Safe area. Aggiunto
viewport-fit=cover: senza, su iOSenv(safe-area-inset-*)valeva 0 e il margine per la barra gesture già presente nella bottom nav non aveva effetto. Aggiunto anche il margine superiore su hero,PageHeadere header dello scout, che in modalità standalone finivano sotto il notch. - Tema scuro attivo. La classe
darksegueprefers-color-schemeda uno script nelhead. I valori del tema scuro sono stati riscritti: l'accento resta il rosso del brand (prima diventava grigio-blu) e sono stati definiti i token semantici che mancavano.theme-colorora ha una tinta per tema. - Feedback al tocco.
Button, voci della bottom nav e comandi principali reagiscono alla pressione e non al rilascio. Anello di focus da tastiera su tutti gli elementi attivabili (styles.css,@layer base): prima era assente sui bottoni scritti a mano. - Materiali. La bottom nav è una superficie traslucida con sfumatura di scorrimento al posto della riga netta; velo dei drawer alleggerito; ombre neutre al posto dell'alone rosso.
- Tipografia. Scala in
remcon crenatura e interlinea per taglia; eliminati i 109text-[Npx]fissi, che non scalavano con l'impostazione di testo del sistema. - Accessibilità e caricamento. Aree di tocco portate a 44px sui comandi piccoli,
scheletro di pagina al posto della schermata bianca in home e profilo, movimento ridotto
che conserva le dissolvenze, supporto a
prefers-reduced-transparencyeprefers-contrast.
Autenticazione e dashboard amministratore (in produzione)
- Login con Google tramite Supabase Auth (DD-011). Al primo accesso l'account si collega a
un giocatore di
giocatori_squadra, e il collegamento non è più modificabile dal giocatore stesso (DD-016 regola 2). - La selezione libera del giocatore è stata rimossa:
/benvenutooffre solo l'accesso con Google e senza sessione non si entra in nessuna schermata. Sparita anche la variabileVITE_AUTH_OBBLIGATORIA(non serve più) e il pulsante «Cambia giocatore» in/profilo. - I permessi di amministrazione arrivano solo da
user_roles(src/lib/ruoli.ts): la lista di nomi incrapp-data.tsè stata eliminata, altrimenti bastava scegliere il nome giusto per amministrare. - Migration
m4_solo_autenticati: toglie al ruoloanonl'accesso alle tabelle v1.0. Applicata in produzione il 03/09/2026, dopo aver impostato l'email di tutta la rosa attiva — il login era già l'unica via d'accesso lato app, quindi il collegamento dei singoli account (che resta un processo continuo a ogni login) non era comunque condizionato da questa migration. - Collegamento automatico al proprio giocatore per email (DD-018, migration
m5_email_giocatori_squadra): niente più scelta manuale da un elenco,/benvenutoconfronta l'email dell'account Google congiocatori_squadra.emaile collega da solo. Senza corrispondenza compare solo un messaggio d'errore, con un pulsante per uscire e riprovare con un altro account. - Dashboard admin: nuove azioni "Aggiungi giocatore" (con email opzionale per il collegamento automatico) e "Disattiva/Riattiva giocatore" per chi lascia la squadra — la riga non viene mai eliminata, così presenze, voti, pagelle e badge della stagione restano agganciati al suo id. L'email è anche modificabile dal pannello "Dati squadra" di ogni giocatore già in rosa.
- Tracciamento tesseramento CSI (migration
m8_tesseramento_csi): numero e data di tessera ingiocatori_squadra, come gli altri campi che gestisce solo l'admin (DD-016/DD-018). La dashboard mostra chi è già tesserato (badge sulla scheda, contatore in "Squadra") e un pannello per registrare numero e data una volta arrivata la tessera dal CSI. - Profilo giocatore: da
/profiloognuno compila i propri dati anagrafici e carica documento, certificato medico e foto tessera con le relative scadenze (modules/profilo-giocatore.md). - Nuova schermata
/admin: stato dei profili della squadra, download di documento, certificato e foto tessera, export CSV per il tesseramento CSI. - Migration
m2_profili_giocatore(tabella dei profili e bucket privato), additiva. - Dalla dashboard l'amministratore modifica i dati squadra (nome, cognome, numero, ruolo), compila i dati personali al posto di un giocatore e scollega un account da un profilo (DD-017). I file restano esclusi: li carica solo il giocatore. Nessuna migration: le policy di M1 e M2 lo consentivano già.
- Foto profilo sincronizzate tra dispositivi: da
/profilola foto caricata finisce nel bucket pubblicoavatar-giocatori(migrationm6_avatar_giocatori) invece che inlocalStorage, così compare per tutta la squadra e non solo su chi l'ha caricata. L'Avatar mostra numero/iniziali finché la foto non è presente. - Scout Live sincronizzato tra dispositivi: il blocco "chi sta scoutando" ora passa dalla
tabella
scout_sessioniinvece che dalocalStorage, quindi due telefoni non possono più prendere il controllo insieme sovrascrivendosi a vicenda. Le partite scoutate concluse vengono archiviate nella nuova tabellascout_partite(migrationm7_scout_partite): prima restavano visibili solo sul telefono di chi aveva chiuso la partita.
Test
- Suite di test in
test/(unit, integration, end-to-end) eseguita con bun, senza nuove dipendenze:npm run testenpm run test:all. - Corretto un difetto emerso dai test: una sessione Scout Live con timestamp illeggibile restava bloccata per sempre invece di scadere.
Collegamento CSI
- Classifica e risultati ufficiali letti dal portale Livescore CSI Bologna (stagione 2025/26, Campionato Open Misto Eccellenza, Girone B).
- La pagina Campionato non usa più dati dimostrativi.
- Dettagli e limiti in modules/collegamento-csi.md.
Infrastruttura
- Migrazione completa da Lovable a sviluppo locale.
- Configurazione Git.
- Repository GitHub indipendente.
- Deploy automatico tramite Vercel.
- Branch main e develop.
Versione 1.0 — luglio 2026
Prima versione usata dalla squadra. Funzionalità incluse: vedi ROADMAP.md § Versione 1.0.