09
Pixel art, code underneath

Tessera

A pixel-art editor whose document is JSON a human can read and hand-edit — and an AI can rewrite.

TypeScript pixel-arteditoraicanvas
click to turn
Canvas ↔ JSON

Hover either side. This is the real format, verbatim from the README.

The whole format
{
  "w": 16, "h": 16,
  "palette": [{ "c": "transparent" },
              { "c": "#2d1b00" },
              { "c": "#f4c430" }],
  "frames": [{ "ms": 100, "layers": [{ "n": "base", "px": [
    "................",
    ".....111111.....",
    "...1122222211...",
    "..122222222221.."
  ]}]}]
}

One character per pixel. “.” is transparent, 1–9 and a–z are palette indices. It is the export, the code panel, and the grid the AI reads — the same text in all three places.

Editor — light and dark
Code panel — the document’s own JSON, six export formats
running Code panel — the document’s own JSON, six export formats

What doesn’t work yet

“The AI produces valid edits that are not good edits.” It reads the artwork correctly, targets the right region, stays inside the canvas — and the results still aren’t ones you’d keep.

The Phase 0 probe run scored 0 of 9, written up honestly with ranked hypotheses for the fix. The plumbing is sound; the taste isn’t there yet.

Edit loop
canvasCanvas 2Dbrush · fill · shapes artwork-corethe JSON documentimports only zodno React rendererpure drawing AI EDIT LOOP context → prompt → schema → validate → pixel ops → diff accept or reject · one undo reverses the whole thing geminifree tierbehind an adapter exportSVG · CSS · ReactPNG · ASCII

You see exactly which pixels an edit would touch, and one undo reverses the whole thing.

Outcome

Tessera

Chapter 10
NoteTakerXX

Spatial note-taking on an infinite canvas — place a note anywhere, connect it to another, tag it, find it again.

continue
09 — Tessera
scroll · drag · ← →