Right panel's thread stop list shows a GripVertical drag handle with cursor: grab but no onDragStart/onDrop — visual lie; thread stop reorder in the right panel is non-functional #177
Labels
No labels
blocked:commit-ready-failed
blocked:gate-fetch
blocked:gate-lint
blocked:gate-plan
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:needs-human
blocked:no-changes
blocked:verify-failed
bug
deferred
feature-request
in-progress
needs-decompose
needs-triage
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/Kimi_Agent_Brother_10_Digitizing_App#177
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding
src/components/workspace/RightPanel.tsx:486renders aGripVerticalicon as the first child of each thread stop row:The
cursor: 'grab'style suggests the user can drag the row to reorder it. Verified: there is noonDragStart, nodraggableattribute, noonDragOver, noonDropon the parent<div>(line 481-505). The cursor change is a visual lie.The thread stop list in the right panel renders the same items the BottomThreadBar shows. The reorder capability was filed in #165 (BottomThreadBar). The right panel has the same gap with a drag handle that does nothing.
Where
src/components/workspace/RightPanel.tsx:486—GripVerticalicon withcursor: 'grab'src/components/workspace/RightPanel.tsx:481-505(the parent<div>has nodraggable/onDragStart)grep -rn 'REORDER_THREAD_STOPS' src/returns 0 hits (the reducer has noREORDER_THREAD_STOPSaction)Suggested fix shape
Two options:
Remove the GripVertical icon (and its
cursor: grab) until reorder is implemented. Replace with a non-interactive indicator (or just no leading icon). The row is clickable for the color picker; the user gets to see the order, but can't change it.Implement thread stop reorder. Add a
REORDER_THREAD_STOPSreducer action ({ from: number, to: number }). Use HTML5 drag-and-drop on the row (draggable={true},onDragStart={...},onDragOver={preventDefault},onDrop={...}). On drop, dispatch the reorder. The GripVertical becomes a real drag handle.Option 2 is the right product move; the right panel and the BottomThreadBar both benefit.
Severity
Medium. The cursor change is a UI lie. Users who try to drag will see the cursor change but the row won't move.
Discovered by
Gap analysis (2026-10-02) of right panel affordances.
Related
Fixed in commit
b5bc1feon origin/main.The right panel now mirrors the BottomThreadBar pattern from #165:
<GripVertical>drag handle wrapped in a<span draggable>that initiates the drag.onDragEntercomputes a left/right drop indicator from the cursor X relative to the row's midpoint;onDragOverallows the drop;onDragLeaveclears the indicator when the cursor leaves the row (not when it enters a child element);onDropdispatchesREORDER_THREAD_STOPS { from, to }to the workspace reducer.dragend/droponce the reducer commits.6 new tests in
issue-177.test.tsxcover the handle rendering, the forward-drop case (from < to, indicator adjusts target), the backward-drop case (from > to, no adjustment), same-row no-op, drop indicator visibility, and source-wrapper opacity dim. All 788 tests pass; the 3 EditorCanvas failures are pre-existing on main (verified viagit stash) and unrelated to this change.Out of scope for this card: the second
GripVerticalicon in the Object List (line 587 in the pre-fix file) renders the same visual lie but for a different surface (colorRegions / stitchObjects) with no reorder reducer action. Filing that as a separate gap so the next triage sweep can pick it up with the correct shape.