A dockable left-panel that renders this node's shared task board and lets you
claim/deliver tasks with a click -- so joule tag is usable in the editor, not
only over the control socket.
- tag_panel.rs: TaskBoardPanel polls the board a few times a second (so a peer's
post/claim/deliver appears live), renders each task with its state, intent,
team, and holder, and offers Claim on claimable tasks + Deliver on ones this
node holds. Actions run through crate::control::tag_run -- the same entry point
the control socket uses -- so the panel is not a second implementation.
- control.rs: extract tag_run() (dispatch + off-thread broadcast) and
tag_board_snapshot() so the socket handler and the panel share one path.
- registered in the workspace dock alongside the other panels (zed.rs); one
`pub mod tag_panel;` line in the crate root.
Verified: panel + app crates build; the app launches with the panel registered
(no startup crash) and a task posted over the socket lands in the board the panel
renders. GPU-drawn panel pixels aren't machine-readable, so the visual is
correct-by-construction (mirrors the existing AgentJoulePanel) -- open the editor
to see it in the left dock.
Co-Authored-By: Claude Opus 4.8 <[email protected]>