Drawing dependencies on the canvas¶
When one task can't start until another finishes, that's a dependency. The canvas lets you draw and remove dependencies directly — no need to open the detail panel.
Add a "blocks" link¶
Each task on the canvas has two small ports on its sides:
- Right side —
blocks(this task blocks something else) - Left side —
blocked by(something else blocks this task)
To add a dependency:
- Hover the task you want to be the blocker until its right-side port appears.
- Click and drag from the right port across to the left-side port of the task you want to mark as blocked.
- Release. The new dashed arrow appears.
The arrow always points from the blocker to the blocked task — same direction the work has to flow.
What if the drop is refused?¶
If a drag would create a circular dependency (e.g. A blocks B, B blocks C, and you try to make C block A), every task that's part of the would-be loop tints red while you drag. The drop is refused; nothing happens on release.
This includes the task you're dragging from — you can't draw a dependency from a task to itself.
Remove a dependency¶
- Hover the dashed arrow you want to remove.
- A small red
×appears at the middle of the arrow. - Click it. The arrow disappears, and a "Dependency removed —
Ctrl+Zto restore" toast appears in the corner.
Press Ctrl+Z (or Cmd+Z on macOS) to undo if you removed the wrong one.
What about parent / child relationships?¶
Parent / child edges (the arrows running up and down between tasks) work the same way, just using the top and bottom ports on each task.
To change a task's parent:
- Hover the task whose parent you want to change. Its top port appears.
- Click and drag from the top port to the bottom port of a new parent.
- Release. The old parent → child arrow disappears; a new one appears.
To detach a task (make it a top-level task with no parent):
- Hover the task. Its top port appears.
- Click and drag from the top port out into empty canvas.
- Release. The parent arrow disappears.
Both actions are reversible — Ctrl+Z puts the old parent back.
If a drop would create a circular parent relationship (e.g. dragging a parent onto one of its own children), every task that's part of the would-be loop tints red and the drop is refused — same affordance as the dependency cycle case.
Who can edit dependencies?¶
Anyone with editor or admin access to the project. If your role is read-only, the side ports and the × glyph won't appear; you'll still see every dependency on the canvas, just not the controls to change them.