Canvas mode system (legacy)
This page documents the pre-activity design. Runtime graph, drawing, and board workflows have migrated to Activities Architecture.
Summary
Pluggable virtual surfaces that own their behavior per mode. Three modes exist: graph-surface (graph browsing), drawing (stylus/raster), and board (semantic connectors). Canvas modes are owned by the canvas widget and can be activated/deactivated, with panel transfer between them.
Motivation
Different interaction surfaces (graph browsing, freehand drawing, structured boards) needed different input handling, rendering, and widget lifecycles. Rather than special-casing each inside the canvas widget, make them pluggable behaviors with a clean interface.
Design
- Mode interface: each mode exposes
activate,deactivate, and handles its own input routing, widget tree, and render state - Graph-surface mode: graph nodes with force layout, selection, LOD, keyboard navigation
- Drawing mode: stylus input with pressure-sensitive strokes, vector + raster layers
- Board mode: semantic connectors, item selection, directed edges, resizable items
- Panel transfer: panels move between canvas modes and HUD via a receiver-registry protocol with rollback
Tasks
- [x] Canvas mode shell with activate/deactivate lifecycle
- [x] Graph-surface mode → See Graph Browsing
- [x] Drawing mode → See Stylus Drawing Input
- [x] Board mode → See Board Canvas Mode
- [x] Panel transfer between modes → See Panel Transfer System
Related
- Goal: Core Platform
- Depends on: Layout Widget Engine
- ADR: Composable States
- See: Lifecycle Invariants
