api.overlay: a crisp vector UI layer on uiCtx, above the pixel buffer (+ cancelok ?vec) master
The approachable-UI ask, done as real (gated) infrastructure. A new piece-facing api.overlay(displayList) ships a small list of vector ops — rounded rects, text, lines — that bios replays onto the native UI canvas (uiCtx) with anti-aliased Canvas 2D, above the pixel-buffer render. The piece sends coords in its own screen units; bios scales by content.width and clears fresh each frame (and once more when a piece drops the overlay, so it never lingers). Additive and gated: api.overlay is a no-op unless a piece calls it, and bios only touches uiCtx when content.overlay is present — so every existing piece is unaffected. This is the "write to both" the pixel-first architecture didn't have: pixel pads underneath, crisp vector UI on top. cancelok gains ?vec: same 8-way D-pad, but the tiles + labels are handed over as a vector overlay instead of drawn into the buffer — smooth rounded tiles and crisp big letters over the pixel pad. Default (no flag) is the pixel UI, untouched. Files: disk.mjs (api.overlay + sendData.overlay passthrough), bios.mjs (drawVectorOverlay + render-loop replay on uiCtx), cancelok.mjs (VEC flag + vectorControls). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>