# 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
