# Edit History — 2026-03-31 ## Summary Added **canvas node selection, side panel, and workspace creation UI** — the first major Canvas UX features beyond the initial viewer. ## Canvas Side Panel & Node Selection **New components:** - `canvas/src/components/SidePanel.tsx` — 420px right-side panel with 5 tabs (Details, Chat, Config, Memory, Events), opens on node click - `canvas/src/components/CreateWorkspaceDialog.tsx` — FAB "New Workspace" button + modal form (name, role, tier, parent ID) - `canvas/src/components/tabs/DetailsTab.tsx` — Inline edit name/role/tier, peer discovery, delete with confirmation - `canvas/src/components/tabs/ChatTab.tsx` — A2A message/send to workspace agent via agent URL discovery - `canvas/src/components/tabs/ConfigTab.tsx` — JSON config viewer/editor for workspace - `canvas/src/components/tabs/MemoryTab.tsx` — Key/value memory browser with add/TTL support - `canvas/src/components/tabs/EventsTab.tsx` — Color-coded workspace event log **Modified files:** - `canvas/src/store/canvas.ts` — Added `selectedNodeId`, `panelTab`, `selectNode()`, `setPanelTab()`, `getSelectedNode()`, `updateNodeData()`, `removeNode()`. Added `url` and `parentId` to `WorkspaceNodeData`. - `canvas/src/components/Canvas.tsx` — Integrated SidePanel + CreateWorkspaceButton, added `onPaneClick` to deselect nodes - `canvas/src/components/WorkspaceNode.tsx` — Click-to-select with blue ring highlight, provisioning pulse animation ## Documentation Updated - `docs/frontend/canvas.md` — Added Side Panel section, Zustand store shape, Create Workspace dialog, updated node selection behavior - `docs/edit-history/2026-03-31.md` — This file