You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Mappa vuota: canvas MapLibre non dipinge (WebGL context lost) #36
Home carica i dati (100 campi da Supabase, banner "Posizione non disponibile. Centro su Roma."), le tile OSM risultano scaricate (200), nessun errore JS/hydration in console — ma l'area mappa resta vuota: niente sfondo stradale, niente marker, niente controlli zoom/attribution.
Console reale dell'utente: WebGL context was lost. + Uncaught (in promise) Error: Acquiring an exclusive Navigator LockManager lock "lock:sb-127-auth-token" immediately failed (lock conteso da N tab aperti in parallelo sulla stessa origin).
Ipotesi principale
Esaurimento contesti WebGL / GPU causato da troppi tab aperti sulla stessa pagina durante i test (colpa nostra, tab di test già chiusi). Il contesto perso non si è ripristinato sull'istanza esistente.
Acceptance criteria
Con un singolo tab fresco su / (hard refresh, cache PWA bypassata) la mappa dipinge tile + marker. Se sì: era esaurimento contesti, chiudere qui documentando.
Se si riproduce anche a tab singolo: indagare init CourtMap (components/map/court-map.tsx), gestire webglcontextlost/webglcontextrestored (messaggio + retry invece di grigio muto).
Ridurre la contesa sul lock auth Supabase con N tab (es. non bloccare il caricamento campi se getUser() fallisce).
Activity
rkestt commentedon Nov 5, 2026
Verifica live: PASS (2026-11-05)
Test su tab singolo, branch
omos/phase0-foundations(commitfb9273c):WebGL context was loste lock Navigator (erano esaurimento contesti da N tab paralleli)Fix inclusi
CourtMap: handlerwebglcontextlost/restored+ bottone Riprova, refs separaticourtMarkers/userMarker,resize()al load, overlay errore solo pre-loadHomePage:getUser()fire-and-forget (non blocca più il loading),fetchLobbies()leggera per il realtime,onCourtSelectmemoizzatoChiude tutti gli acceptance criteria del ticket.