import { useState, useEffect } from 'react'; import { Label } from '@/components/ui/label'; import { Checkbox } from '@/components/ui/checkbox'; import { Input } from '@/components/ui/input'; import { FlaskConical, TestTube, AlertCircle, Zap, ClipboardList, FileText, ScrollText, ShieldCheck, FastForward, Sparkles, Cpu, RotateCcw, } from 'lucide-react'; import { cn } from '@/lib/utils'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import type { PhaseModelEntry } from '@automaker/types'; import { PhaseModelSelector } from '../model-defaults/phase-model-selector'; type PlanningMode = 'skip' | 'lite' | 'spec' | 'full'; interface FeatureDefaultsSectionProps { defaultSkipTests: boolean; enableDependencyBlocking: boolean; skipVerificationInAutoMode: boolean; defaultPlanningMode: PlanningMode; defaultRequirePlanApproval: boolean; enableAiCommitMessages: boolean; defaultFeatureModel: PhaseModelEntry; defaultMaxTurns: number; onDefaultSkipTestsChange: (value: boolean) => void; onEnableDependencyBlockingChange: (value: boolean) => void; onSkipVerificationInAutoModeChange: (value: boolean) => void; onDefaultPlanningModeChange: (value: PlanningMode) => void; onDefaultRequirePlanApprovalChange: (value: boolean) => void; onEnableAiCommitMessagesChange: (value: boolean) => void; onDefaultFeatureModelChange: (value: PhaseModelEntry) => void; onDefaultMaxTurnsChange: (value: number) => void; } export function FeatureDefaultsSection({ defaultSkipTests, enableDependencyBlocking, skipVerificationInAutoMode, defaultPlanningMode, defaultRequirePlanApproval, enableAiCommitMessages, defaultFeatureModel, defaultMaxTurns, onDefaultSkipTestsChange, onEnableDependencyBlockingChange, onSkipVerificationInAutoModeChange, onDefaultPlanningModeChange, onDefaultRequirePlanApprovalChange, onEnableAiCommitMessagesChange, onDefaultFeatureModelChange, onDefaultMaxTurnsChange, }: FeatureDefaultsSectionProps) { const [maxTurnsInput, setMaxTurnsInput] = useState(String(defaultMaxTurns)); // Keep the displayed input in sync if the prop changes after mount // (e.g. when settings are loaded asynchronously or reset from parent) useEffect(() => { setMaxTurnsInput(String(defaultMaxTurns)); }, [defaultMaxTurns]); return (
Configure default settings for new features.
The default AI model and thinking level used when creating new feature cards.
Maximum number of tool-call round-trips the AI agent can perform per feature. Higher values allow more complex tasks but use more API credits. Default: 1000, Range: 1-2000. Supported by Claude and Codex providers.
{defaultPlanningMode === 'skip' && 'Jump straight to implementation without upfront planning.'} {defaultPlanningMode === 'lite' && 'Create a quick planning outline with tasks before building.'} {defaultPlanningMode === 'spec' && 'Generate a specification with acceptance criteria for approval.'} {defaultPlanningMode === 'full' && 'Create comprehensive spec with phased implementation plan.'}
When enabled, the agent will pause after generating a plan and wait for you to review, edit, and approve before starting implementation. You can also view the plan from the feature card.
When enabled, new features will use TDD with automated tests. When disabled, features will require manual verification.
When enabled, features with incomplete dependencies will show blocked badges and warnings. Auto mode and backlog ordering always respect dependencies regardless of this setting.
When enabled, auto mode will grab features even if their dependencies are not verified, as long as they are not currently running. This allows faster pipeline execution without waiting for manual verification.
When enabled, opening the commit dialog will automatically generate a commit message using AI based on your staged or unstaged changes. You can configure the model used in Model Defaults.