diff --git a/eslint.config.mjs b/eslint.config.mjs index 0938adc..1cc2254 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,7 +1,7 @@ import nextCoreWebVitals from 'eslint-config-next/core-web-vitals'; import nextTypeScript from 'eslint-config-next/typescript'; -export default [ +const eslintConfig = [ ...nextCoreWebVitals, ...nextTypeScript, { @@ -17,3 +17,5 @@ export default [ }, }, ]; + +export default eslintConfig; diff --git a/src/components/graph/dependency-graph-page.tsx b/src/components/graph/dependency-graph-page.tsx index ef54e91..e02528d 100644 --- a/src/components/graph/dependency-graph-page.tsx +++ b/src/components/graph/dependency-graph-page.tsx @@ -15,7 +15,7 @@ import { import '@xyflow/react/dist/style.css'; import dagre from 'dagre'; -import { EpicChipStrip } from './epic-chip-strip'; +import { EpicChipStrip } from '../shared/epic-chip-strip'; import { WorkflowTabs, type WorkflowTab } from './workflow-tabs'; import { TaskCardGrid, type BlockerDetail } from './task-card-grid'; import { TaskDetailsDrawer } from './task-details-drawer'; @@ -25,14 +25,14 @@ import { GraphSection } from './graph-section'; import { ProjectScopeControls } from '../shared/project-scope-controls'; import { WorkspaceHero } from '../shared/workspace-hero'; -import { buildGraphModel, type GraphNode } from '../../lib/graph'; +import { buildGraphModel } from '../../lib/graph'; import { buildPathWorkspace, type GraphHopDepth, analyzeBlockedChain, detectDependencyCycles, } from '../../lib/graph-view'; -import { buildBlockedByTree, type BlockedTreeNode } from '../../lib/kanban'; +import { buildBlockedByTree } from '../../lib/kanban'; import { type BeadIssue } from '../../lib/types'; import type { ProjectScopeOption } from '../../lib/project-scope'; @@ -599,8 +599,7 @@ export function DependencyGraphPage({ const nodeTypes: NodeTypes = useMemo( () => ({ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - flowNode: GraphNodeCard as any, + flowNode: GraphNodeCard as NodeTypes['flowNode'], }), [], ); @@ -847,7 +846,6 @@ export function DependencyGraphPage({ ; /** Map of issue ID to detailed blocker info. */ blockerDetailsMap: Map; /** Map of issue ID to detailed downstream blocking info. */ @@ -157,7 +151,7 @@ function statusBadge(status: BeadIssue['status'], isActionable: boolean, hasBloc * A single task card displaying the issue ID, title, priority, type, assignee, * and detailed blocker list (interactive). */ -function TaskCard({ issue, selected, blockedBy, blocks, blockers, blocking, isActionable, onSelect }: TaskCardProps) { +function TaskCard({ issue, selected, blockers, blocking, isActionable, onSelect }: TaskCardProps) { const hasBlockers = blockers.length > 0; // Note: blockers list only contains OPEN blockers (computed in page) const badge = statusBadge(issue.status, isActionable, hasBlockers); const projectName = (issue as BeadIssue & { project?: { name?: string } }).project?.name ?? null; @@ -360,7 +354,7 @@ function TaskCard({ issue, selected, blockedBy, blocks, blockers, blocking, isAc * Renders a responsive grid of task cards. * Uses auto-fill with minmax to prevent cards from being too narrow to read. */ -export function TaskCardGrid({ tasks, selectedId, signalById, blockerDetailsMap, blocksDetailsMap, actionableIds, onSelect }: TaskCardGridProps) { +export function TaskCardGrid({ tasks, selectedId, blockerDetailsMap, blocksDetailsMap, actionableIds, onSelect }: TaskCardGridProps) { // Show an empty state when no tasks exist in the selected epic if (tasks.length === 0) { return ( @@ -377,8 +371,6 @@ export function TaskCardGrid({ tasks, selectedId, signalById, blockerDetailsMap, key={task.id} issue={task} selected={selectedId === task.id} - blockedBy={signalById.get(task.id)?.blockedBy ?? 0} - blocks={signalById.get(task.id)?.blocks ?? 0} blockers={blockerDetailsMap?.get(task.id) ?? []} blocking={blocksDetailsMap?.get(task.id) ?? []} isActionable={actionableIds?.has(task.id) ?? false} diff --git a/src/components/graph/epic-chip-strip.tsx b/src/components/shared/epic-chip-strip.tsx similarity index 100% rename from src/components/graph/epic-chip-strip.tsx rename to src/components/shared/epic-chip-strip.tsx diff --git a/tests/lib/mutations.test.ts b/tests/lib/mutations.test.ts index c06445e..dbf0aed 100644 --- a/tests/lib/mutations.test.ts +++ b/tests/lib/mutations.test.ts @@ -6,7 +6,6 @@ import { buildBdMutationArgs, validateMutationPayload, executeMutation, - type MutationOperation, } from '../../src/lib/mutations'; const root = 'C:/Users/Zenchant/codex/beadboard';