diff --git a/PROJECT_STATE.md b/PROJECT_STATE.md index 57b0d6f..b6f54fb 100644 --- a/PROJECT_STATE.md +++ b/PROJECT_STATE.md @@ -9,22 +9,18 @@ schema in [docs/DATABASE.md](docs/DATABASE.md), le procedure in ## Stato generale -- **Versione:** 1.2.3 (in produzione su `main` la 1.2.2) — notifiche su tre canali, avvisi di palloni - (3 ore prima) e presenze (24 ore prima) una sola volta, niente promemoria evento, niente foto - tessera, avviso certificato a 30 giorni per il giocatore, avviso rosso per chi non l'ha caricato. +- **Versione:** 1.3.0 (tag `v1.3.0` su `main`) — notifica di compleanno, obiettivi cliccabili con card di + dettaglio, presenze calcolate sui convocati, avvisi in Home ridisegnati, caratteri più grandi, tessera CSI + tolta dalla dashboard. Dettaglio in [docs/CHANGELOG.md](docs/CHANGELOG.md). - **Backend:** Supabase proprietario (`kfkcldwncxqaixetsjes`). Lovable Cloud e il vecchio Project Ref `hetycilxgkdmccelwerq` non si usano più. - **Migration:** 42 file in `supabase/migrations/`, fino a `m31_notifica_compleanno`. Le prime 41 (fino a `m30_sollecito_solo_24h`) sono applicate in produzione (verificato con `npx supabase migration list` il 01/10/2026); la `m31` no, ancora da applicare (DD-047). La `m29` toglie `foto_path`: il codice che non la legge più (1.2.2) va rilasciato. -- **Su `develop`, non ancora rilasciato:** obiettivi cliccabili con card di dettaglio, presenze del mese - calcolate sui convocati, obiettivi «Presenze collettive» e «evento di squadra al mese» (ora dell'evento), - tessera CSI tolta dalla dashboard (DD-048), avvisi in Home ridisegnati e caratteri più grandi in tutta l'app (DD-049), notifica di compleanno (DD-047, migration `m31`). Dettaglio in - [docs/CHANGELOG.md](docs/CHANGELOG.md). - **Worker delle notifiche** (`mailer/`): in funzione su un Raspberry Pi con Docker dal 29/09/2026 ([docs/WORKER_EMAIL.md](docs/WORKER_EMAIL.md)). Il codice con l'interruttore «Email» in Profilo - è su `develop`, non ancora su `main`. + è su `main` dalla 1.3.0. - **Accesso:** il login Google è l'unica via d'ingresso; i permessi di amministrazione arrivano solo da `user_roles`. Il collegamento degli account è un processo continuo: ogni giocatore si collega al primo accesso (DD-018). diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 573596c..b577df6 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -13,34 +13,48 @@ versioni `0.y.z` erano pre-release. ## [Non rilasciato] +## [1.3.0] - 2026-10-06 + +Gli auguri di compleanno arrivano da soli, gli obiettivi di squadra si possono toccare per capire come funzionano +e le presenze si contano solo sugli eventi a cui si è convocati. In tutta l'app i caratteri sono più grandi e gli +avvisi in Home più chiari. La migration `m31_notifica_compleanno` è **da applicare in produzione** (`npx supabase +db push`); il resto non tocca il database. + ### Aggiunto -- **Obiettivi cliccabili** — toccando un obiettivo (in Squadra o nella card della Home) si apre una card che - spiega tutto: come si calcola, cosa conta e cosa no, periodo di validità, fonte dei dati, un esempio. Nessuna - migration. - **Notifica di compleanno** — ogni giorno, dalle 8:00, il festeggiato riceve un messaggio di auguri e tutti gli altri membri attivi, allenatori compresi, il solo avviso «Oggi è il compleanno di …»; con più compleanni lo stesso giorno un solo messaggio a testa. Push, centro notifiche ed email. Il 29 febbraio non è gestito (DD-047, issue #11). Migration `m31_notifica_compleanno`, da applicare in produzione. +- **Obiettivi cliccabili** — toccando un obiettivo (in Squadra o nella card della Home) si apre una card che + spiega tutto: come si calcola, cosa conta e cosa no, cosa è una presenza persa, periodo di validità, fonte dei dati, + un esempio con numeri. Nessuna migration. ### Modificato +- **Obiettivo «90% di presenze del mese»** — i posti sono i convocati di ogni partita e allenamento (tutta la rosa se + non ce ne sono), come nelle presenze collettive: chi non è convocato non abbassa più la percentuale. Assente, forse, + infortunato e nessuna risposta restano presenze perse. Nessuna migration. +- **Obiettivo «Presenze collettive»** — sostituisce «250 presenze complessive»: è la percentuale di presenze di tutta la + rosa su allenamenti e partite definiti in stagione (passati e futuri, posti = convocati), con target 90%. Nessuna migration. +- **Obiettivo «1 evento di squadra al mese»** — si completa quando arriva l'ora dell'evento, non appena viene + creato. Un evento futuro non conta finché la sua data e ora non sono passate. Nessuna migration. +- **Avvisi in Home più leggibili** — certificati e turno palloni usano lo stesso componente (`Avviso`): icona + propria per ogni caso (non solo il colore), titolo e testo più grandi, elenchi di persone in righe con il dettaglio + a destra e il conteggio, freccia dove la card porta ai documenti, comparsa graduale. Il turno palloni ha la pillola + «Oggi»/«In arrivo» e i messaggi in riquadri. Solo aspetto: testi e regole di quando compaiono non cambiano. + Nessuna migration. - **Caratteri più grandi in tutta l'app** — ogni testo sotto i 16 px sale di un passo (12→13, 14→15, ecc.), nelle card, negli elenchi, nelle statistiche e nei drawer. Restano uguali le barre a pillola dei menu (navigazione in basso e sottosezioni) e i badge minuscoli. Solo aspetto, nessuna migration (DD-049). -- **Avvisi in Home più leggibili** — certificati e turno palloni usano lo stesso componente (`Avviso`): icona - propria per ogni caso (non solo il colore), titolo e testo più grandi, elenchi di persone in righe con il dettaglio - a destra e il conteggio, freccia dove la card porta ai documenti, comparsa graduale. Solo aspetto: testi e regole - di quando compaiono non cambiano. Nessuna migration. -- **Tessera CSI tolta dalla dashboard** — in Profili spariscono il blocco «Tesseramento CSI» (numero e data +- **Etichetta «Cacche» nella rosa** — nella scheda del giocatore in Squadra la riga «Cacche/partita» si chiama + «Cacche»; il valore resta la media per partita. Nessuna migration. + +### Rimosso + +- **Tessera CSI dalla dashboard** — in Profili spariscono il blocco «Tesseramento CSI» (numero e data tessera), il badge «Tesserato»/«Da tesserare» e il riquadro «Tesserati» della tab Squadra. L'export CSV non - cambia. Le colonne a database restano, non più usate (DD-048). Nessuna migration. -- **Obiettivo «90% di presenze del mese»** — i posti sono i convocati di ogni partita e allenamento (tutta la rosa se - non ce ne sono), come nelle presenze collettive: chi non è convocato non abbassa più la percentuale. Nessuna migration. -- **Obiettivo «1 evento di squadra al mese»** — si completa quando arriva l'ora dell'evento, non appena viene - creato. Un evento futuro non conta finché la sua data e ora non sono passate. Nessuna migration. -- **Obiettivo «Presenze collettive»** — sostituisce «250 presenze complessive»: è la percentuale di presenze di tutta la - rosa su allenamenti e partite definiti in stagione (passati e futuri, posti = convocati), con target 90%. Nessuna migration. + cambia. Le colonne `numero_tessera` e `data_tessera` restano a database, non più usate (DD-048). Nessuna migration. ## [1.2.3] - 2026-10-04 diff --git a/package-lock.json b/package-lock.json index 3b96583..38d2fe2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "crapp", - "version": "1.2.3", + "version": "1.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "crapp", - "version": "1.2.3", + "version": "1.3.0", "dependencies": { "@supabase/supabase-js": "^2.111.0", "@tailwindcss/vite": "^4.2.1", diff --git a/package.json b/package.json index 2797ad9..66649a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "crapp", - "version": "1.2.3", + "version": "1.3.0", "private": true, "sideEffects": false, "type": "module",