Skip to content

fix(board): silent DnD swallow on quarantined column in lanes view (#2704 fold) #2758

Description

@jaylfc

Source

Post-merge audit of #2704 (tsk-taqcij). #2704 is already merged to dev.

Finding (verbatim from audit)

Severity: Medium. Surface: drag-and-drop UX in lanes view.

Reproduction: Switch board to lanes view, drag any non-quarantined task card over a
quarantined cell, drop. BoardLane calls
onDropTask={(id, status, laneKey) => dispatchDnd(id, status, laneKey)} unconditionally
(desktop/src/apps/ProjectsApp/board/ProjectBoard.tsx:251). dispatchDnd has a guard
if (columnStatus == "quarantined") return; at line 119 that returns without calling
dndAction, without setAnnouncement, and without window.alert. The card snaps back to its
original position with zero user-visible feedback.

Code path:

BoardLane onDropTask -> dispatchDnd(taskId, "quarantined", laneKey)
-> line 119: if (columnStatus === "quarantined") return; <- silent exit

In kanban view the column passes onDropTask={s === "quarantined" ? undefined : ...}
(desktop/src/apps/ProjectsApp/board/ProjectBoard.tsx:226), so the browser never fires the
drop event for that column. In lanes view there is no equivalent guard -- BoardLane always
passes the handler. The guard at line 119 is therefore reachable in lanes view and produces a
silent no-op.

Fix direction

Replace the bare return in dispatchDnd with a user-visible alert (or surface it via the board
announcement system). Alternatively, prevent BoardLane from passing onDropTask for quarantined
cells (matching the kanban behaviour).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingplatformPlatform core features

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions