work-tree-canvas
work-tree-canvas
A persistent, visual graph of how your work branches as you (and any agents you're driving) traverse a problem space. Each node is a unit of attention β a problem, decision, question, insight. Edges mean "spawned from": a child exists because of its parent. The graph lives in an Obsidian Canvas so you can pan/zoom/edit it like any other note.
Built on top of the JSON Canvas 1.0 format used by kepano/obsidian-skills/json-canvas (MIT, Β© 2026 Steph Ango). See the Attribution section at the end.
Mental model
- Nodes are units of attention. Anything you'd otherwise lose between sessions: an open question, a decision you punted on, an insight that came up while debugging something else.
- Edges are "because of". A child exists because the parent led you there. Direction matters β fromNode is the cause / context, toNode is the spawned branch.
- A small active set β 1β3 nodes β is what you're working on right now. They're colored a bright electric cyan (
#18E0FF, π―) so the live edge of the work pops out of the tree. Exactly one of them is the primary focus, marked loud with a leading π; that's "where I'm thinking from right now" and where new nodes attach by default. The other 0β2 are parallel threads you're juggling (e.g. while driving several agents). adddoes not change the active set. It always attaches to the π primary. The active set only changes when the user says so β mark a node active, unmark one, or promote a new primary. This is what lets you branch sideways without descending forever.- Groups are containers, not units of attention. A group is a labeled rectangle that wraps a whole branch into one logical topic bucket (e.g. "Auth Server setup"). It carries a lightweight lifecycle of its own (color + emoji: π active β β³ in progress β β blocked β β done) but takes no edges β it just corrals the nodes whose boxes fall inside its rectangle. See the Groups section.
- Doneness flows through the tree. A container β a group, or any node that has children β is "done" only when everything inside it is settled (π’ resolved or π‘ insight). That single rule runs down (you can't close a container over open work) and up (finishing the last open child offers to close its parents). See Doneness & propagation.
Color & emoji taxonomy
The active set is 1β3 nodes carrying the bright active color #18E0FF (a literal hex, not a numbered preset β that's what makes it louder than everything else on the canvas). They're the things you're working on right now. Exactly one of them is the primary focus: its title line leads with a loud π (π π― β¦), and that's the attach anchor for add. The other active nodes are plain π― (no arrow). Marking / unmarking a node and promoting a new primary move these markers β the active color appears on 1β3 nodes, the π on exactly one of them, never more.