Multi-canvas

- Multi-canvas: each project now supports multiple named canvases — switch between them via the new chip-based switcher in the toolbar
- Canvas survives dev server port changes: frames are now bound to the canvas, not the server's port, so restarting the dev server on a different port keeps your layout intact
- Camera position + zoom now persist per canvas — cold opens restore you to where you left off instead of dropping you at origin
- Session restore is race-safe: a blank save can no longer stomp a populated canvas, and frames are recovered correctly when switching between worktrees of the same repo