/** * The ONE task window: view, edit and create all live here, and every task * surface (the board's rows, an agent node's task line, the node detail * popover) opens THIS component — pointer targets stay thin, the window owns * the behaviour. * * Shape: a non-fullscreen, DRAGGABLE card (never a modal dialog). Details * render as multi-line MARKDOWN by default; 编辑 switches the same card into * multi-line editing, so reading and writing never jump between surfaces. * Actions: owner reassignment (CAS-immediate), edit/save, reopen or complete, * and a two-step delete. * * Visual base: the vendored shadcn/ui set — `Card` shell, `Badge` status, * `Input` / `Textarea` fields, a `ToggleGroup` owner picker and `Button` * actions — over the token bridge in src/client/ui/theme.css, plus the shared * `MarkdownText` renderer with the plugin's copy labels. The shell paints no * surface of its own: the window is portaled to `document.body`, where * `AnchoredPopover` owns the floating border/radius/shadow, so this card is * layout and content only (the page's "static panels cast no shadow" rule). * * That portal also sits OUTSIDE the task page root, so the card re-declares * the page root class (`dsw-tasks`) to pick up the scoped base reset the * plugin ships instead of preflight — box-sizing and form-control font * inheritance; without preflight a bare `