Paint todo/ideas
Infinite scroll - there's no reason to limit the drawing area since we're only putting pixels on the screen where the canvas viewport is. Add a global transform to the context with translate and scale (zoom), and a pan tool for click to drag.
Save - stash the action stack and drawing stack somewhere so the canvas restores at page load time
Export - Download current viewport as a png, download everything as svg
Style - Set things like line width, fill/stroke colour. Maybe a properties flyout on the right?
Object select - to edit object properties
If we store paths as svg paths then they'll serialize easier. Doesn't really matter, for rectangle and circle we can store coords and radius and convert them to paths later.
If we're going to do a property editor then we should spec up property types so we can generate the form mechanically. A shape is then defined by a list of property/type pairs, and maybe click handlers to manipulate anchors.