Recorder mock — M0.21

The M0.21 proof point: the full layered scene tree from
recorder-features-and-render-api.md §4, rendered headless.
The compositor stack, back-to-front:
- Gradient background panel — a
Graphicslinear gradient covering NDC. - Recording quad — placeholder for the screen capture, drawn as a
rounded
Graphicswith stroke (the real M2 path swaps in aSpritewrapping aVideoTexturefed by ScreenCaptureKit). - Camera bubble — rounded
Spritein a corner. - Cursor sprite + click ripple — a small textured
Spriteplus aGraphicsellipse scaled-up beneath it. - Keyboard chip — rounded
Graphicswith aTextlabel inside. - Caption text —
Textunder the recording quad.
Render output: target/recorder_mock.png. Stats reported on stdout:
draw_calls=5, sprites=3, graphics=4, glyphs=43, meshes=0. Every
primitive type wisp ships is exercised in one frame — if recorder_mock
runs cleanly, the public API surface is sufficient for the recorder's
editor preview.
cargo run -p wisp --example recorder_mock
The mock uses synthetic textures (a checker pattern for the recording quad's stand-in, a simple sprite for the cursor). M2+ replaces these with real capture frames; the scene-graph shape stays the same.
Stage ·
Sprite ·
Graphics ·
Text ·
Recorder feature inventory (offsite — workspace docs)