You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Todo Panel — Drag to reorder + recategorize categories and items #49
Full drag-and-drop using @dnd-kit (already in apps/web deps). A single drag gesture can reorder items within a category, recategorize an item into a different category, and reorder categories themselves.
State machine:todoStore gains:
reorderItems(items: Array<{ id, categoryId, order }>) — batch update orders after a drag operation
recategorizeItem(itemId, newCategoryId, targetOrder) — move item to new category at a given position
reorderCategories(categoryIds: string[]) — update category order
WebSocket:todo.mutate already supports batched mutations — a drag operation that reorders and recategorizes is sent as a single mutation.
Drag implementation: DndContext wraps the full list. Each category is a SortableContext for its items. Dropping an item into a different category's SortableContext recategorizes it. Category headers are also sortable (separate SortableContext or drag handle). Visual feedback during drag (opacity, placeholder).
Acceptance criteria
Items can be dragged within a category to reorder
Items can be dragged from one category into another to recategorize
Category headers can be dragged to reorder categories
A single drag gesture that recategorizes AND repositions works (e.g. drag item from Backend into UI at position 3)
Visual feedback during drag (ghost/opacity + placeholder)
Drag result is committed as a single todo.mutate call
Constraints: done section items are NOT draggable (done items are static)
Unit tests: reorderItems, recategorizeItem, reorderCategories logic in todoStore
Activity
feat: Todo Panel drag to reorder + recategorize (#49) (#61)
harrryyd commentedon Jun 8, 2026
Implemented and merged to main.
[codex] sync v0.0.27 retained features (#131)