fix(player): map MediaError codes, stop hls on 404, log autoplay rejections, cap reconnect loop master
Four small error-handling fixes in the player files: 1. video.error.code -> user-readable message The 'error' event handler surfaced a generic 'Video element error' for every MediaError. Map the four codes (NETWORK, DECODE, SRC_NOT_SUPPORTED) to actionable messages, and skip MEDIA_ERR_ABORTED (fires on deliberate tear-downs, not real errors). 2. hls.stopLoad() on 404 The 404 branch reported 'Stream not live' but kept hls.js running, so it kept polling the dead URL on its internal schedule. Stop loading after the 404. 3. console.warn on silent play() catches Three sites had .catch(() => {}) for video.play(): the click-to-play handler, WebRTC track attach, and Safari-native HLS. The HLS manifest path already had a warn; the others didn't. Autoplay blocking is a real user-facing failure mode and the user is staring at a black screen — at least surface it in dev. 4. WebRTC reconnect max-retry scheduleReconnect called itself forever on a dead stream, emitting the same error string on every attempt. Cap at 15 attempts (~45s of retries at the default 3s delay). Reset the counter to zero on the first track event, so a stream that works for a while and then drops gets a fresh retry budget. After the cap, surface 'Stream unavailable — stopped reconnecting' as a terminal error.