diff --git a/PROGRESS.md b/PROGRESS.md index ce46470..f856b48 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -69,6 +69,7 @@ 23. **Keyboard Shortcuts:** Added global support for keyboard navigation: - **`Escape`**: Instantly close any open modal (Task Detail, Add Task, Settings, or Audit Logs). - **`n`**: Open the "Add Task" modal from the main dashboard (disabled while typing in inputs). +24. **Drag-and-Drop Stability:** Fixed a bug where tasks would "disappear" if dropped in an invalid area. Tasks now remain visible at their original position if a drop is cancelled. ### Phase 3: Advanced Features - **Real-time Notifications:** Explore WebSockets for task assignments. diff --git a/dashy.db b/dashy.db index 7123f47..f7842e7 100644 Binary files a/dashy.db and b/dashy.db differ diff --git a/screens.jsx b/screens.jsx index 457b3fe..2c5583e 100644 --- a/screens.jsx +++ b/screens.jsx @@ -224,8 +224,9 @@ function OverviewScreen({ tasks, onOpen, onAddFor, density, onMoveTask, dbUsers !draggingTask || t.id !== draggingTask.id)} + // Do not filter out the dragging task; TaskCard handles its own visibility via the 'dragging' prop. + // This ensures the element stays mounted and onDragEnd fires reliably. + tasks={byUser[u.id]} onOpen={onOpen} onAdd={() => onAddFor(u.id)} density={density} @@ -435,7 +436,7 @@ function UserScreen({ user, tasks, onOpen, onAddFor, density, onMoveTask }) {
!draggingTask || t.id !== draggingTask.id)} + tasks={flagged} onOpen={onOpen} density={density} dragOver={dragOverCol === 'flagged'} onDragOver={setDragOverCol} @@ -451,7 +452,7 @@ function UserScreen({ user, tasks, onOpen, onAddFor, density, onMoveTask }) { /> !draggingTask || t.id !== draggingTask.id)} + tasks={open} onOpen={onOpen} density={density} dragOver={dragOverCol === 'open'} onDragOver={setDragOverCol}