- Cross-task drag-to-reorder on the rev-38 dependency graph viewCloses the explicitly-named rev-123 next-sprint candidate. Rev 123 shipped per-task drag-to-reorder of blockers on the rev-36 TaskBlockers card; the rev-38 cross-task dependency graph view was still read-only โ operators triaging the workspace-wide picture could see which dependent waited on what, but couldn't change the visual order without scrolling to each task card individually. Rev 124 closes that gap by adding HTML5 drag-and-drop to every blocker pill on the dependency graph rows. Each blocker pill (when the row has 2+ blockers and the operator has editor+ access) gains a โฎโฎ grip handle, drag-over highlights the drop target with an inset brand-color top accent, and dropping persists the new order via the existing rev-36 `PUT /api/tasks/:id/blockers` endpoint โ same server primitive the rev-123 per-task surface uses, no new endpoint, no new mental model. Mirrors the rev-123 primitive at the workspace-axis exactly so the two operator-direction surfaces (per-task card + cross-task graph) read as siblings rather than parallel design languages.
- Inline blocker remove (ร) on every dependency graph rowCross-task graph blocker pills gain a small ร remove affordance (gated to editor+) so admins triaging the workspace-wide dependency picture can clear stale blockers right from the cross-task surface without scrolling to the per-task card and opening its blockers picker. Pure UX โ same `setTaskBlockedBy` helper the rev-36 per-task `ร` button calls. Optimistic UI override: the row reflects the new state before `router.refresh()` propagates the server state back, with a clean rollback if the persist fails.
- Up/Down keyboard arrow reorder on per-task blocker grip handleCloses the keyboard-axis gap on the rev-123 drag-to-reorder primitive in the same cycle pattern that's been running since rev 119 (Cmd+Enter / Esc shortcuts). The rev-123 grip handle was a `<span>` โ pure mouse affordance, unreachable for keyboard-only operators (and pointer-restricted assistive tech users). Rev 124 promotes it to a `<button>` with ArrowUp/ArrowDown handlers that move the focused blocker up/down in the list and re-focus the grip after the DOM update via requestAnimationFrame so successive arrow presses keep operating on the same blocker. Accessibility-first: drag-and-drop is the most-discoverable affordance, but keyboard reorder is the load-bearing one for power-users + assistive tech. Pairs with the rev-119 useComposerShortcuts hook to extend the keyboard surface one more step into the dashboard's interactive vocabulary.
- Cumulative visual polish โ focus-visible ring on grip handle + tactile drop-target accent on cross-task blockersCumulative micro-polish (every rev 22+ has carried at least one). New `:focus-visible` brand-color outline on the per-task grip button so keyboard-first operators land cleanly on the reorder affordance. New `.ld-tdg-blocker.is-drag-over` inset top accent on the cross-task graph drop target so the drop position reads tactilely without competing with the rev-38 brand-amber dependent-row treatment. New `.ld-tdg-summary-hint` quiet italic line in the panel head reads `Drag blockers to reorder ยท ร to remove` only when the workspace has at least one row with 2+ blockers AND the operator has editor+ โ surfaces the affordance without screaming to viewers or to single-blocker workspaces.