Files
CRAPP/docs/TODO.md
T
davideandClaude Opus 5 d8f334007b Fa arrivare le push ad app chiusa e rende diagnosticabile quando non arrivano.
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>
2026-09-06 14:24:07 +02:00

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 main e il login è l'unica via d'accesso. La migration M4, che chiude gli accessi anon alle 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

Backlog

  • AI Allenamenti (roadmap v1.2).
  • Backup automatici (roadmap, idee future).