diff --git a/apps/frontend/src/renderer/components/TaskCreationWizard.tsx b/apps/frontend/src/renderer/components/TaskCreationWizard.tsx index cbfa73e5..4c9f19e1 100644 --- a/apps/frontend/src/renderer/components/TaskCreationWizard.tsx +++ b/apps/frontend/src/renderer/components/TaskCreationWizard.tsx @@ -12,7 +12,7 @@ */ import { useState, useEffect, useCallback, useRef, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { Loader2, ChevronDown, ChevronUp, RotateCcw, FolderTree, GitBranch } from 'lucide-react'; +import { Loader2, ChevronDown, ChevronUp, RotateCcw, FolderTree, GitBranch, Info } from 'lucide-react'; import { Button } from './ui/button'; import { Label } from './ui/label'; import { @@ -521,6 +521,19 @@ export function TaskCreationWizard({ } >
+ {/* Worktree isolation info banner */} +
+ +
+

+ {t('tasks:wizard.worktreeNotice.title')} +

+

+ {t('tasks:wizard.worktreeNotice.description')} +

+
+
+ {/* Main form fields */} - {isMerging ? ( - <> - - {hasGitConflicts || isBranchBehind || hasPathMappedMerges - ? t('taskReview:merge.buttons.resolving') - : stageOnly - ? t('taskReview:merge.buttons.staging') - : t('taskReview:merge.buttons.merging')} - - ) : ( - <> - - {hasGitConflicts || isBranchBehind || hasPathMappedMerges - ? (stageOnly ? t('taskReview:merge.buttons.stageWithAIMerge') : t('taskReview:merge.buttons.mergeWithAI')) - : (stageOnly - ? t('taskReview:merge.buttons.stageTo', { branch: worktreeStatus.currentProjectBranch || worktreeStatus.baseBranch || 'main' }) - : t('taskReview:merge.buttons.mergeTo', { branch: worktreeStatus.currentProjectBranch || worktreeStatus.baseBranch || 'main' }))} - - )} - + + + + + +

+ {t('tasks:review.mergeTooltip')} +

+
+
)} {/* Create PR Button */} diff --git a/apps/frontend/src/shared/i18n/locales/en/tasks.json b/apps/frontend/src/shared/i18n/locales/en/tasks.json index 6c8ab258..b44421a1 100644 --- a/apps/frontend/src/shared/i18n/locales/en/tasks.json +++ b/apps/frontend/src/shared/i18n/locales/en/tasks.json @@ -145,6 +145,10 @@ "browseFiles": "Browse Files", "creating": "Creating...", "createTask": "Create Task", + "worktreeNotice": { + "title": "Isolated Workspace", + "description": "This task runs in an isolated git worktree. Your main branch stays safe until you choose to merge." + }, "gitOptions": { "title": "Git Options (optional)", "baseBranchLabel": "Base Branch (optional)", @@ -158,6 +162,9 @@ "createFailed": "Failed to create task. Please try again." } }, + "review": { + "mergeTooltip": "Merges changes from the task's worktree branch back to your base branch. AI will resolve any conflicts. You can then choose whether to keep or remove the worktree." + }, "edit": { "title": "Edit Task", "description": "Update task details including title, description, classification, images, and settings. Changes will be saved to the spec files.", diff --git a/apps/frontend/src/shared/i18n/locales/fr/tasks.json b/apps/frontend/src/shared/i18n/locales/fr/tasks.json index 270f5880..830f3f7f 100644 --- a/apps/frontend/src/shared/i18n/locales/fr/tasks.json +++ b/apps/frontend/src/shared/i18n/locales/fr/tasks.json @@ -145,6 +145,10 @@ "browseFiles": "Parcourir les fichiers", "creating": "Création...", "createTask": "Créer la tâche", + "worktreeNotice": { + "title": "Espace de travail isolé", + "description": "Cette tâche s'exécute dans un worktree git isolé. Votre branche principale reste protégée jusqu'à ce que vous choisissiez de fusionner." + }, "gitOptions": { "title": "Options Git (optionnel)", "baseBranchLabel": "Branche de base (optionnel)", @@ -158,6 +162,9 @@ "createFailed": "Échec de la création de la tâche. Veuillez réessayer." } }, + "review": { + "mergeTooltip": "Fusionne les changements de la branche worktree de la tâche vers votre branche de base. L'IA résoudra les conflits éventuels. Vous pourrez ensuite choisir de conserver ou de supprimer le worktree." + }, "edit": { "title": "Modifier la tâche", "description": "Mettez à jour les détails de la tâche, y compris le titre, la description, la classification, les images et les paramètres. Les modifications seront enregistrées dans les fichiers de spécification.",