@@ -77,31 +87,48 @@ export function IssueDetail({ issue, onInvestigate, investigationResult }: Issue
{/* Actions */}
-
+ {hasLinkedTask ? (
+
+ ) : (
+
+ )}
- {/* Task Created Result */}
- {investigationResult?.success && (
+ {/* Task Linked Info */}
+ {hasLinkedTask && (
- Task Created
+ Task Linked
- {investigationResult.analysis.summary}
-
-
- {investigationResult.analysis.estimatedComplexity}
-
-
- Task ID: {investigationResult.taskId}
-
-
+ {investigationResult?.success ? (
+ <>
+ {investigationResult.analysis.summary}
+
+
+ {investigationResult.analysis.estimatedComplexity}
+
+
+ Task ID: {taskId}
+
+
+ >
+ ) : (
+
+
+ Task ID: {taskId}
+
+
+ )}
)}
diff --git a/auto-claude-ui/src/renderer/components/github-issues/types/index.ts b/auto-claude-ui/src/renderer/components/github-issues/types/index.ts
index c3baa16a..100f0205 100644
--- a/auto-claude-ui/src/renderer/components/github-issues/types/index.ts
+++ b/auto-claude-ui/src/renderer/components/github-issues/types/index.ts
@@ -4,6 +4,8 @@ export type FilterState = 'open' | 'closed' | 'all';
export interface GitHubIssuesProps {
onOpenSettings?: () => void;
+ /** Navigate to view a task in the kanban board */
+ onNavigateToTask?: (taskId: string) => void;
}
export interface IssueListItemProps {
@@ -17,6 +19,10 @@ export interface IssueDetailProps {
issue: GitHubIssue;
onInvestigate: () => void;
investigationResult: GitHubInvestigationResult | null;
+ /** ID of existing task linked to this issue (from metadata.githubIssueNumber) */
+ linkedTaskId?: string;
+ /** Handler to navigate to view the linked task */
+ onViewTask?: (taskId: string) => void;
}
export interface InvestigationDialogProps {
diff --git a/auto-claude-ui/src/renderer/stores/task-store.ts b/auto-claude-ui/src/renderer/stores/task-store.ts
index 17dbfe27..7b3a04dc 100644
--- a/auto-claude-ui/src/renderer/stores/task-store.ts
+++ b/auto-claude-ui/src/renderer/stores/task-store.ts
@@ -514,6 +514,19 @@ export function isDraftEmpty(draft: TaskDraft | null): boolean {
);
}
+// ============================================
+// GitHub Issue Linking Helpers
+// ============================================
+
+/**
+ * Find a task by GitHub issue number
+ * Used to check if a task already exists for a GitHub issue
+ */
+export function getTaskByGitHubIssue(issueNumber: number): Task | undefined {
+ const store = useTaskStore.getState();
+ return store.tasks.find(t => t.metadata?.githubIssueNumber === issueNumber);
+}
+
// ============================================
// Task State Detection Helpers
// ============================================