diff --git a/apps/ui/src/components/views/graph-view/graph-view.tsx b/apps/ui/src/components/views/graph-view/graph-view.tsx index f5ea8edc..9ef01bce 100644 --- a/apps/ui/src/components/views/graph-view/graph-view.tsx +++ b/apps/ui/src/components/views/graph-view/graph-view.tsx @@ -46,7 +46,7 @@ export function GraphView({ // Skip completed features (they're in archive) if (f.status === 'completed') return false; - const featureBranch = f.branchName; + const featureBranch = f.branchName as string | undefined; if (!featureBranch) { // No branch assigned - show only on primary worktree diff --git a/apps/ui/src/components/views/graph-view/hooks/use-graph-nodes.ts b/apps/ui/src/components/views/graph-view/hooks/use-graph-nodes.ts index 66265477..2b83a4a4 100644 --- a/apps/ui/src/components/views/graph-view/hooks/use-graph-nodes.ts +++ b/apps/ui/src/components/views/graph-view/hooks/use-graph-nodes.ts @@ -5,6 +5,12 @@ import { getBlockingDependencies } from '@automaker/dependency-resolver'; import { GraphFilterResult } from './use-graph-filter'; export interface TaskNodeData extends Feature { + // Re-declare properties from BaseFeature that have index signature issues + priority?: number; + error?: string; + branchName?: string; + dependencies?: string[]; + // Task node specific properties isBlocked: boolean; isRunning: boolean; blockingDependencies: string[]; @@ -112,8 +118,9 @@ export function useGraphNodes({ nodeList.push(node); // Create edges for dependencies - if (feature.dependencies && feature.dependencies.length > 0) { - feature.dependencies.forEach((depId: string) => { + const deps = feature.dependencies as string[] | undefined; + if (deps && deps.length > 0) { + deps.forEach((depId: string) => { // Only create edge if the dependency exists in current view if (featureMap.has(depId)) { const sourceFeature = featureMap.get(depId)!;