Il testo della notifica viaggia ora cifrato dentro la push (aes128gcm, RFC
8188/8291) invece di essere recuperato dal service worker con una fetch al
risveglio. Era quella fetch a non chiudersi in tempo: ad app chiusa il browser
tiene vivo il worker pochi secondi, showNotification non veniva mai chiamata e
non compariva niente, mentre ad app aperta con la rete calda sembrava tutto a
posto. La POST porta anche Urgency: high, che chiede la consegna immediata
invece di far accumulare i messaggi fino al risveglio del dispositivo.
Cadono i pezzi che esistevano solo per rimediare al payload vuoto: la route
push-messaggio, la coda promemoria_push con la sua scadenza a 12 ore,
messaggioPalloniOggi() e il timeout nel worker. Tutti e tre i mittenti avevano
gia il testo pronto prima di inviare.
Il worker si aggiorna da solo all'avvio e a ogni ritorno in primo piano
(mantieniWorkerPushAggiornato): nella webapp installata quello vecchio puo
sopravvivere a lungo, e senza questo un dispositivo resterebbe fermo alla
versione che va a cercare il testo in rete.
Profilo -> Opzioni ha "Mandami una notifica di prova", visibile solo a notifiche
attive: manda una push a questo dispositivo e riporta stato HTTP, corpo della
risposta e se l'endpoint risulta davvero in push_subscriptions. Senza, "non
arriva" era cieco: ogni prova richiedeva un admin, un evento nello stato giusto
e una seconda persona, e la risposta del servizio push veniva buttata via.
inviaPush torna { stato, corpo } e logga il corpo sui rifiuti.
Dalle prove sul campo: a parita di server, iPhone installato da Home riceve ad
app chiusa. Su Android installato come webapp resta da verificare: il WebAPK e
un'app Android a se, con permesso notifiche (Android 13+) e voce batteria
distinti da quelli di Chrome. Annotato nei limiti noti.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
TODO
Solo il lavoro in corso o imminente. L'elenco completo delle funzionalità previste sta in ROADMAP.md; le idee non ancora valutate pure.
In corso
- Correzione push Android pronta in locale: aggiornamento del worker nelle sessioni della webapp e test del canale cifrato verificati. Resta la verifica su Motorola installato, ad app chiusa e schermo bloccato; procedura e limiti in Notifiche.
- Documentazione tecnica del progetto.
- Autenticazione Google e dashboard amministratore: il codice è in produzione su
maine il login è l'unica via d'accesso. La migration M4, che chiude gli accessianonalle tabelle v1.0, è stata applicata in produzione (03/09/2026). Resta il collegamento dei singoli account: ogni giocatore si aggancia al proprio profilo al primo login (DD-018), un processo continuo — vale anche per chi viene aggiunto a stagione in corso da/admin. Stato di dettaglio in PROJECT_STATE.md.
Prossimo
- Niente di assegnato. Le voci ancora aperte in ROADMAP.md sono «Calendario ufficiale» (v2.0, i dati delle gare future arrivano già dal feed CSI) e la v1.2.
La gestione tesseramenti CSI della v1.1 è completa: raccolta dati, export CSV e tracciamento
di chi è già tesserato (numero e data di tessera, migration m8_tesseramento_csi, registrabili
da /admin).
Il profilo giocatore lato giocatore e i certificati medici sono fatti: ProfiloAmministrativo
in src/routes/profilo.tsx carica documento, certificato e foto con le date di scadenza, e
la dashboard amministratore legge quei dati.
Manutenzione ricorrente
- Collegamento CSI: aggiornare
project_ideteam_ida inizio stagione 2026/27 (vedi modules/collegamento-csi.md).
Backlog
- AI Allenamenti (roadmap v1.2).
- Backup automatici (roadmap, idee future).