Skip to content

Mappa vuota: canvas MapLibre non dipinge (WebGL context lost) #36

Closed

Description

@rkestt

Sintomo

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.

Evidenze raccolte (2026-11-05, branch omos/phase0-foundations)

  • Canvas presente e dimensionato (es. 857x300), container corretto (411px = min-h-[50vh] ok).
  • document.querySelectorAll('.court-marker') = 100, stilati correttamente (accent/white border), ma tutti fuori striscia visibile o clippati.
  • Tile tile.openstreetmap.org richieste per le coordinate giuste di Roma, tutte 200.
  • WebGLRenderingContext creabile; nessun page error.
  • 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).

Branch: omos/phase0-foundations. File: components/map/court-map.tsx, app/(app)/page.tsx.

Activity

  1. rkestt commented on Nov 5, 2026

    @rkestt
    OwnerAuthor

    Verifica live: PASS (2026-11-05)

    Test su tab singolo, branch omos/phase0-foundations (commit fb9273c):

    • Fresh load + hard refresh: tile OSM 200, 100 marker, nessun overlay errore
    • Console pulita: spariti WebGL context was lost e lock Navigator (erano esaurimento contesti da N tab paralleli)
    • Reload: marker restano 100, nessun duplicato
    • Toggle light/dark ok, resize ok (canvas non collassa), nessun infinite-loading senza auth

    Fix inclusi

    • CourtMap: handler webglcontextlost/restored + bottone Riprova, refs separati courtMarkers/userMarker, resize() al load, overlay errore solo pre-load
    • HomePage: getUser() fire-and-forget (non blocca più il loading), fetchLobbies() leggera per il realtime, onCourtSelect memoizzato

    Chiude tutti gli acceptance criteria del ticket.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions