From e64a850f57643114466362e62818bfff6f2b772f Mon Sep 17 00:00:00 2001 From: Kacper Date: Sat, 10 Jan 2026 20:08:17 +0100 Subject: [PATCH] feat: enhance feature dialogs with planning mode tooltips - Integrated Tooltip components into AddFeatureDialog, EditFeatureDialog, and MassEditDialog to provide user guidance on planning mode availability. - Updated the rendering logic for planning mode selection to conditionally display tooltips when planning modes are not supported. - Improved user experience by clarifying the conditions under which planning modes can be utilized. --- .../board-view/dialogs/add-feature-dialog.tsx | 92 ++++++++++++------- .../dialogs/edit-feature-dialog.tsx | 92 ++++++++++++------- .../board-view/dialogs/mass-edit-dialog.tsx | 86 ++++++++++++----- 3 files changed, 179 insertions(+), 91 deletions(-) diff --git a/apps/ui/src/components/views/board-view/dialogs/add-feature-dialog.tsx b/apps/ui/src/components/views/board-view/dialogs/add-feature-dialog.tsx index bab34522..c502e2b0 100644 --- a/apps/ui/src/components/views/board-view/dialogs/add-feature-dialog.tsx +++ b/apps/ui/src/components/views/board-view/dialogs/add-feature-dialog.tsx @@ -53,6 +53,7 @@ import { DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; import { getAncestors, formatAncestorContextForPrompt, @@ -492,23 +493,44 @@ export function AddFeatureDialog({ /> -
- {modelSupportsPlanningMode && ( -
- +
+
+ + {modelSupportsPlanningMode ? ( -
- )} + ) : ( + + + +
+ {}} + testIdPrefix="add-feature-planning" + compact + disabled + /> +
+
+ +

Planning modes are only available for Claude Provider

+
+
+
+ )} +
@@ -526,28 +548,32 @@ export function AddFeatureDialog({ Run tests
- {modelSupportsPlanningMode && ( -
- setRequirePlanApproval(!!checked)} - disabled={planningMode === 'skip' || planningMode === 'lite'} - data-testid="add-feature-require-approval-checkbox" - /> - -
- )} +
+ setRequirePlanApproval(!!checked)} + disabled={ + !modelSupportsPlanningMode || + planningMode === 'skip' || + planningMode === 'lite' + } + data-testid="add-feature-require-approval-checkbox" + /> + +
diff --git a/apps/ui/src/components/views/board-view/dialogs/edit-feature-dialog.tsx b/apps/ui/src/components/views/board-view/dialogs/edit-feature-dialog.tsx index addd7e83..7b4ac693 100644 --- a/apps/ui/src/components/views/board-view/dialogs/edit-feature-dialog.tsx +++ b/apps/ui/src/components/views/board-view/dialogs/edit-feature-dialog.tsx @@ -52,6 +52,7 @@ import { DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; import { DependencyTreeDialog } from './dependency-tree-dialog'; import { isClaudeModel, supportsReasoningEffort } from '@automaker/types'; @@ -516,23 +517,44 @@ export function EditFeatureDialog({ /> -
- {modelSupportsPlanningMode && ( -
- +
+
+ + {modelSupportsPlanningMode ? ( -
- )} + ) : ( + + + +
+ {}} + testIdPrefix="edit-feature-planning" + compact + disabled + /> +
+
+ +

Planning modes are only available for Claude Provider

+
+
+
+ )} +
@@ -552,28 +574,32 @@ export function EditFeatureDialog({ Run tests
- {modelSupportsPlanningMode && ( -
- setRequirePlanApproval(!!checked)} - disabled={planningMode === 'skip' || planningMode === 'lite'} - data-testid="edit-feature-require-approval-checkbox" - /> - -
- )} +
+ setRequirePlanApproval(!!checked)} + disabled={ + !modelSupportsPlanningMode || + planningMode === 'skip' || + planningMode === 'lite' + } + data-testid="edit-feature-require-approval-checkbox" + /> + +
diff --git a/apps/ui/src/components/views/board-view/dialogs/mass-edit-dialog.tsx b/apps/ui/src/components/views/board-view/dialogs/mass-edit-dialog.tsx index ce391330..30042a4c 100644 --- a/apps/ui/src/components/views/board-view/dialogs/mass-edit-dialog.tsx +++ b/apps/ui/src/components/views/board-view/dialogs/mass-edit-dialog.tsx @@ -15,8 +15,9 @@ import { modelSupportsThinking } from '@/lib/utils'; import { Feature, ModelAlias, ThinkingLevel, PlanningMode } from '@/store/app-store'; import { TestingTabContent, PrioritySelect, PlanningModeSelect } from '../shared'; import { PhaseModelSelector } from '@/components/views/settings-view/model-defaults/phase-model-selector'; -import { isCursorModel, type PhaseModelEntry } from '@automaker/types'; +import { isCursorModel, isClaudeModel, type PhaseModelEntry } from '@automaker/types'; import { cn } from '@/lib/utils'; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; interface MassEditDialogProps { open: boolean; @@ -167,6 +168,7 @@ export function MassEditDialog({ open, onClose, selectedFeatures, onApply }: Mas const hasAnyApply = Object.values(applyState).some(Boolean); const isCurrentModelCursor = isCursorModel(model); const modelAllowsThinking = !isCurrentModelCursor && modelSupportsThinking(model); + const modelSupportsPlanningMode = isClaudeModel(model); return ( !open && onClose()}> @@ -205,30 +207,64 @@ export function MassEditDialog({ open, onClose, selectedFeatures, onApply }: Mas
{/* Planning Mode */} - - setApplyState((prev) => ({ - ...prev, - planningMode: apply, - requirePlanApproval: apply, - })) - } - > - { - setPlanningMode(newMode); - // Auto-suggest approval based on mode, but user can override - setRequirePlanApproval(newMode === 'spec' || newMode === 'full'); - }} - requireApproval={requirePlanApproval} - onRequireApprovalChange={setRequirePlanApproval} - testIdPrefix="mass-edit-planning" - /> - + {modelSupportsPlanningMode ? ( + + setApplyState((prev) => ({ + ...prev, + planningMode: apply, + requirePlanApproval: apply, + })) + } + > + { + setPlanningMode(newMode); + // Auto-suggest approval based on mode, but user can override + setRequirePlanApproval(newMode === 'spec' || newMode === 'full'); + }} + requireApproval={requirePlanApproval} + onRequireApprovalChange={setRequirePlanApproval} + testIdPrefix="mass-edit-planning" + /> + + ) : ( + + + +
+
+
+ + +
+
+
+ {}} + testIdPrefix="mass-edit-planning" + disabled + /> +
+
+
+ +

Planning modes are only available for Claude Provider

+
+
+
+ )} {/* Priority */}