From ac8dfcac7b25bcf7f1985ca0d837846bf766abb1 Mon Sep 17 00:00:00 2001 From: Mitsu <50143759+Mitsu13Ion@users.noreply.github.com> Date: Tue, 30 Dec 2025 17:43:33 +0100 Subject: [PATCH] refactor: remove deprecated TaskDetailPanel component (#432) TaskDetailPanel was superseded by TaskDetailModal which is the active component used in App.tsx. This removes dead code. --- .../task-detail/TaskDetailPanel.tsx | 267 ------------------ .../renderer/components/task-detail/index.ts | 1 - 2 files changed, 268 deletions(-) delete mode 100644 apps/frontend/src/renderer/components/task-detail/TaskDetailPanel.tsx diff --git a/apps/frontend/src/renderer/components/task-detail/TaskDetailPanel.tsx b/apps/frontend/src/renderer/components/task-detail/TaskDetailPanel.tsx deleted file mode 100644 index cb9e6237..00000000 --- a/apps/frontend/src/renderer/components/task-detail/TaskDetailPanel.tsx +++ /dev/null @@ -1,267 +0,0 @@ -import { Separator } from '../ui/separator'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '../ui/tabs'; -import { ScrollArea } from '../ui/scroll-area'; -import { TooltipProvider } from '../ui/tooltip'; -import { calculateProgress } from '../../lib/utils'; -import { startTask, stopTask, submitReview, recoverStuckTask, deleteTask } from '../../stores/task-store'; -import { TaskEditDialog } from '../TaskEditDialog'; -import { useTaskDetail } from './hooks/useTaskDetail'; -import { TaskHeader } from './TaskHeader'; -import { TaskProgress } from './TaskProgress'; -import { TaskMetadata } from './TaskMetadata'; -import { TaskActions } from './TaskActions'; -import { TaskWarnings } from './TaskWarnings'; -import { TaskSubtasks } from './TaskSubtasks'; -import { TaskLogs } from './TaskLogs'; -import { TaskReview } from './TaskReview'; -import type { Task } from '../../../shared/types'; - -interface TaskDetailPanelProps { - task: Task; - onClose: () => void; -} - -export function TaskDetailPanel({ task, onClose }: TaskDetailPanelProps) { - const state = useTaskDetail({ task }); - const _progress = calculateProgress(task.subtasks); - - // Event Handlers - const handleStartStop = () => { - if (state.isRunning && !state.isStuck) { - stopTask(task.id); - } else { - startTask(task.id); - } - }; - - const handleRecover = async () => { - state.setIsRecovering(true); - const result = await recoverStuckTask(task.id, { autoRestart: true }); - if (result.success) { - state.setIsStuck(false); - state.setHasCheckedRunning(false); - } - state.setIsRecovering(false); - }; - - const handleReject = async () => { - if (!state.feedback.trim()) { - return; - } - state.setIsSubmitting(true); - await submitReview(task.id, false, state.feedback); - state.setIsSubmitting(false); - state.setFeedback(''); - }; - - const handleDelete = async () => { - state.setIsDeleting(true); - state.setDeleteError(null); - const result = await deleteTask(task.id); - if (result.success) { - state.setShowDeleteDialog(false); - onClose(); - } else { - state.setDeleteError(result.error || 'Failed to delete task'); - } - state.setIsDeleting(false); - }; - - const handleMerge = async () => { - console.warn('[TaskDetailPanel] handleMerge called, stageOnly:', state.stageOnly); - state.setIsMerging(true); - state.setWorkspaceError(null); - try { - console.warn('[TaskDetailPanel] Calling mergeWorktree...'); - const result = await window.electronAPI.mergeWorktree(task.id, { noCommit: state.stageOnly }); - console.warn('[TaskDetailPanel] mergeWorktree result:', JSON.stringify(result, null, 2)); - if (result.success && result.data?.success) { - // For stage-only: don't close the panel, show success message - // For full merge: close the panel - if (state.stageOnly && result.data.staged) { - // Changes are staged in main project - show success but keep panel open - console.warn('[TaskDetailPanel] Stage-only success, showing success message'); - state.setWorkspaceError(null); - state.setStagedSuccess(result.data.message || 'Changes staged in main project'); - state.setStagedProjectPath(result.data.projectPath); - state.setSuggestedCommitMessage(result.data.suggestedCommitMessage); - } else { - console.warn('[TaskDetailPanel] Full merge success, closing panel'); - onClose(); - } - } else { - console.warn('[TaskDetailPanel] Merge failed:', result.data?.message || result.error); - state.setWorkspaceError(result.data?.message || result.error || 'Failed to merge changes'); - } - } catch (error) { - console.error('[TaskDetailPanel] handleMerge exception:', error); - state.setWorkspaceError(error instanceof Error ? error.message : 'Unknown error during merge'); - } finally { - console.warn('[TaskDetailPanel] Setting isMerging to false'); - state.setIsMerging(false); - } - }; - - const handleDiscard = async () => { - state.setIsDiscarding(true); - state.setWorkspaceError(null); - const result = await window.electronAPI.discardWorktree(task.id); - if (result.success && result.data?.success) { - state.setShowDiscardDialog(false); - onClose(); - } else { - state.setWorkspaceError(result.data?.message || result.error || 'Failed to discard changes'); - } - state.setIsDiscarding(false); - }; - - return ( - -
- {/* Header */} - state.setIsEditDialogOpen(true)} - /> - - - - {/* Tabs */} - - - - Overview - - - Subtasks ({task.subtasks.length}) - - - Logs - - - - {/* Overview Tab */} - - -
- {/* Warnings */} - - - {/* Progress */} - - - {/* Metadata */} - - - {/* Human Review Section */} - {state.needsReview && ( - - )} -
-
-
- - {/* Subtasks Tab */} - - - - - {/* Logs Tab */} - - - -
- - - - {/* Actions */} - - - {/* Edit Task Dialog */} - -
-
- ); -} diff --git a/apps/frontend/src/renderer/components/task-detail/index.ts b/apps/frontend/src/renderer/components/task-detail/index.ts index 102209fa..222ede13 100644 --- a/apps/frontend/src/renderer/components/task-detail/index.ts +++ b/apps/frontend/src/renderer/components/task-detail/index.ts @@ -1,4 +1,3 @@ -export { TaskDetailPanel } from './TaskDetailPanel'; export { TaskDetailModal } from './TaskDetailModal'; export { TaskHeader } from './TaskHeader'; export { TaskProgress } from './TaskProgress';