loading render harness…
window.glslopRender(isfString, { width=512, height=512, time=0, inputs={} })
  -> Promise<{ compileOk, errors[], pngDataUrl, renderHash, inputs[] }>

window.glslopRender(isfString, { width, height, inputs, capture: { fps=60, frames: [0, 1, 2, 300] } })
  -> Promise<{ compileOk, errors[], pngDataUrl, renderHash, inputs[], frames: [{ frame, time, pngDataUrl, renderHash }] }>
  // a stepped timeline (TIME=i/fps, TIMEDELTA=1/fps, FRAMEINDEX=i, feedback advancing once per frame,
  // DATE pinned to 2000-01-01), the same one the video exporter steps; frames come back sorted

window.glslopRenderClip(isfString, { size=512, seconds=5, fps=30, bitrate=400000 })
  -> Promise<{ ok, bytes, b64, codec, path, error? }>   // base64 mp4