canvas, content, and draw rectangles independently; expose size/scale through CanvasState inspection panelBegin/End (auto grid/overlay, persistent context menu)DrawBackground, DrawGrid, DrawSelectRect, etc.)CanvasState exposes geometry, zoom, scrollView→Advanced, View→Scaling, Palette, BPP) stay open until closedSetTileAt, SelectRect), view control (ScrollToTile, SetZoom), entity manipulation hooksz3ed) and gRPC service, matching UI modesCanvas, set renderer (optional) and IDInitializePaletteEditor and SetUsageModeSetAvailableModes({kTilePainting, kTileSelecting})canvas.Begin(size) → draw bitmaps/entities → canvas.End()AddMenuItem/AddMenuItem(item, usage)GetConfig()/GetSelection() for state; respond to context menu commands via callback lambda in RenderDrawContextMenu logic with new render callback signaturecanvas/ module; update includes