How live reload works
The bridge is a plain WebSocket + HTTP server. The userscript connects over
WebSocket and answers JSON requests (loadSB3 / start / stop / screenshot).
On loadSB3 it fetches the bytes from GET /get.sb3?path=… and loads them into
the TurboWarp VM; save_project writes the file then sends loadSB3, so the
editor always shows the latest save. For a snapshot the userscript calls the
renderer's requestSnapshot and returns a PNG data URL; the server then serves
the lossless PNG through unchanged (screenshot) or re-encodes it as a compressed
JPEG (screenshot_jpeg, via sharp).