diff --git a/src/renderer/features/tasks/components/issue-selector/inline-issue-selector.tsx b/src/renderer/features/tasks/components/issue-selector/inline-issue-selector.tsx
index f1288d6d9..a89ba6a83 100644
--- a/src/renderer/features/tasks/components/issue-selector/inline-issue-selector.tsx
+++ b/src/renderer/features/tasks/components/issue-selector/inline-issue-selector.tsx
@@ -1,4 +1,5 @@
import { Check, Loader2 } from 'lucide-react';
+import { observer } from 'mobx-react-lite';
import { useCallback, useEffect, useRef, useState } from 'react';
import type { Issue } from '@shared/tasks';
import {
@@ -10,6 +11,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger } from '@renderer/lib/
import { ShortcutHint } from '@renderer/lib/ui/shortcut-hint';
import { cn } from '@renderer/utils/utils';
import { ConnectIssueIntegrationPlaceholder, IssueRow, ProviderLogo } from './issue-selector';
+import { getLinkedIssueMap } from './use-linked-issue-urls';
import { useIssueSearch } from './useIssueSearch';
export interface InlineIssueSelectorProps {
@@ -19,16 +21,20 @@ export interface InlineIssueSelectorProps {
repositoryUrl?: string;
projectPath?: string;
disabled?: boolean;
+ /** Skip "already linked" indicator for this task — useful when re-selecting the same task's issue. */
+ excludeTaskId?: string;
}
-export function InlineIssueSelector({
+export const InlineIssueSelector = observer(function InlineIssueSelector({
value,
onValueChange,
projectId,
repositoryUrl = '',
projectPath = '',
disabled,
+ excludeTaskId,
}: InlineIssueSelectorProps) {
+ const linkedIssueMap = getLinkedIssueMap(projectId, excludeTaskId);
const {
issues,
issueProvider,
@@ -90,7 +96,8 @@ export function InlineIssueSelector({
case 'Enter': {
e.preventDefault();
const issue = issues[highlightedIndex];
- if (issue) onValueChange(issue === value ? null : issue);
+ if (!issue) break;
+ onValueChange(issue === value ? null : issue);
break;
}
case 'Escape':
@@ -170,6 +177,7 @@ export function InlineIssueSelector({
issues.map((issue, index) => {
const isSelected = value?.identifier === issue.identifier;
const isHighlighted = index === highlightedIndex;
+ const linkedTo = linkedIssueMap.get(issue.url);
return (
+ }
+ />
+ {issue.title || issue.identifier}
+
+ );
+}