Files
fusion/packages/dashboard/app/components/TaskContextMenu.css
gsxdsm 924bcb97d5 FN-7255: add task card context menus
Add shared task action menus across board and list task surfaces.

- Add reusable task context menu UI with open, copy, archive, delete, pause, duplicate, retry, refine, and dependency actions.
- Wire board cards, swimlanes, worktree groups, and list rows to expose consistent menu behavior.
- Reuse task-detail action handlers and cover menu interactions with dashboard tests.
- Document the new task context menu behavior and add a patch changeset.

Files changed:
 .changeset/fn-7255-card-context-menu.md            |   7 +
 docs/dashboard-guide.md                            |   6 +
 packages/dashboard/app/App.tsx                     |   2 +
 packages/dashboard/app/components/Board.tsx        |  61 ++-
 packages/dashboard/app/components/Column.tsx       |  43 +-
 packages/dashboard/app/components/Lane.tsx         |  11 +-
 packages/dashboard/app/components/ListView.css     |  25 ++
 packages/dashboard/app/components/ListView.tsx     | 438 ++++++++++++++++++-
 packages/dashboard/app/components/TaskCard.css     |  12 +
 packages/dashboard/app/components/TaskCard.tsx     | 472 ++++++++++++++++++++-
 .../dashboard/app/components/TaskContextMenu.css   |  57 +++
 .../dashboard/app/components/TaskContextMenu.tsx   | 346 +++++++++++++++
 .../dashboard/app/components/TaskDetailModal.tsx   | 235 ++++------
 .../dashboard/app/components/WorktreeGroup.tsx     |  60 ++-
 .../app/components/__tests__/ListView.test.tsx     | 159 ++++++-
 .../__tests__/TaskCard.cli-states.test.tsx         |   1 +
 .../app/components/__tests__/TaskCard.test.tsx     | 180 +++++++-
 .../components/__tests__/TaskContextMenu.test.tsx  | 205 +++++++++
 .../app/components/__tests__/board-mobile.test.tsx |   1 +
 .../app/components/dashboard/MainContent.tsx       |  12 +
 .../__tests__/MainContent.graph-popout.test.tsx    |   1 +
 .../dashboard/app/components/dashboard/types.ts    |   1 +
 packages/dashboard/app/hooks/useAppSettings.ts     |   8 +
 23 files changed, 2178 insertions(+), 165 deletions(-)

Fusion-Task-Id: FN-7255
Fusion-Task-Lineage: 5b5714a9-3eb5-4df1-a466-0d2f839b6bd9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 01:57:09 -07:00

58 lines
1.5 KiB
CSS

.task-context-menu {
--task-context-menu-min-width: calc(var(--space-xl) * 6 + var(--space-lg));
--task-context-menu-max-width: min(calc(var(--space-xl) * 9 + var(--space-md)), calc(100vw - var(--space-xl)));
position: absolute;
z-index: 20;
min-width: var(--task-context-menu-min-width);
max-width: var(--task-context-menu-max-width);
padding: var(--space-xs) 0;
border: var(--btn-border-width) solid var(--border);
border-radius: var(--radius-sm);
background: var(--surface);
box-shadow: var(--shadow-lg);
}
.task-context-menu__item {
display: block;
width: 100%;
padding: var(--space-sm) var(--space-md);
border: 0;
background: transparent;
color: var(--text);
font: inherit;
text-align: left;
cursor: pointer;
}
.task-context-menu__item:hover,
.task-context-menu__item:focus {
outline: none;
background: var(--surface-hover, color-mix(in srgb, var(--text) 6%, transparent));
}
.task-context-menu__item--danger {
color: var(--color-error);
}
.task-context-menu__item--danger:hover,
.task-context-menu__item--danger:focus {
background: color-mix(in srgb, var(--color-error) 8%, transparent);
}
.task-context-menu__item--note {
color: var(--text-muted);
font-size: calc(var(--space-sm) + var(--space-xs) * 0.75);
cursor: default;
}
@media (max-width: 768px) {
.task-context-menu {
--task-context-menu-min-width: min(calc(100vw - var(--space-xl)), calc(var(--space-xl) * 6));
}
.task-context-menu__item {
padding: var(--space-md);
}
}