Summary
Place note cards on the canvas: add existing notes from a picker, drag cards to position them, persist their layout, and open a note by double-clicking its card.
Part of #342. Depends on the canvas scaffold and pan/zoom surface.
Behavior
- Add existing notes to the canvas from a picker; render each as a card.
- Drag a card to reposition it within the canvas transform.
- Double-click a card to open its note (switch to the notes view with that note selected).
- Card positions persist client-side, consistent with how the note tree and plugin install state are stored.
Implementation notes
- Read notes from
data.notes (the WorkspaceViewProps the runtime passes to a view).
- Persist card positions to
localStorage, keyed per canvas.
- Reuse the node-drag handling from
GraphView for card dragging under the view {x,y,k} transform.
- Cross-view navigation to open a note: switch the active view to notes with the target note selected, matching how nav and selection are wired in
Workspace.tsx and NotesView.tsx.
Acceptance criteria
Summary
Place note cards on the canvas: add existing notes from a picker, drag cards to position them, persist their layout, and open a note by double-clicking its card.
Part of #342. Depends on the canvas scaffold and pan/zoom surface.
Behavior
Implementation notes
data.notes(theWorkspaceViewPropsthe runtime passes to a view).localStorage, keyed per canvas.GraphViewfor card dragging under theview {x,y,k}transform.Workspace.tsxandNotesView.tsx.Acceptance criteria