Diagnostic Events
logDiag({event_type, level, ...}) writes to the client_diag_events Supabase table. Levels: 'info', 'warning', 'error' (defaults to 'warning'). Used for non-Sentry diagnostic breadcrumbs (e.g. sentry_init_skipped, hull_hitbox_missing).
The Supabase POST uses keepalive: true, so the request survives page unload — safe to call from unload handlers. Fire-and-forget; never throws.
Implemented at src/starship-survivors/engine/telemetry/diag.ts. Dual-channel: also sends to Sentry via captureMessage (when VITE_SENTRY_DSN is configured) so events are searchable/alertable even when the Supabase row is the durable backup.
Row schema written: player_id, event_type, level, message, payload, app_version (from BUILD_VERSION), user_agent. Player ID is set via setDiagPlayerId() after auth.