updatePixelDataCache() drew the sprite into an offscreen canvas and read
its alpha channel without checking that the image had actually decoded.
Read too early, every pixel came back transparent and the sprite could
not be clicked or dragged until something else forced a recompute; with
a broken image (the 404 from the folder-casing bug, or a user-supplied
replacement) drawImage threw InvalidStateError into the mousemove
handlers.
Skip the update until img.complete && naturalWidth > 0, clear the cache
on img.onerror, and catch failures from drawImage/getImageData. Every
consumer of pixelDataCache already tolerates null.
Guards proposed by EndoTheDev in PR #22; the path change from that PR was
superseded by the import.meta.url fix in 0.71.1.