mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-02 08:33:36 +00:00
- Added a new DashboardView component for improved project management. - Updated sidebar navigation to redirect to the dashboard instead of the home page. - Removed ProjectActions from the sidebar for a cleaner interface. - Enhanced BoardView to conditionally render the WorktreePanel based on visibility settings. - Introduced worktree panel visibility management per project in the app store. - Updated project settings to include worktree panel visibility and favorite status. - Adjusted navigation logic to ensure users are directed to the appropriate view based on project state.
146 lines
4.6 KiB
TypeScript
146 lines
4.6 KiB
TypeScript
import { createLogger } from '@automaker/utils/logger';
|
|
import { useSetupStore } from '@/store/setup-store';
|
|
import { StepIndicator } from './setup-view/components';
|
|
import {
|
|
WelcomeStep,
|
|
ThemeStep,
|
|
CompleteStep,
|
|
ProvidersSetupStep,
|
|
GitHubSetupStep,
|
|
} from './setup-view/steps';
|
|
import { useNavigate } from '@tanstack/react-router';
|
|
|
|
const logger = createLogger('SetupView');
|
|
|
|
// Main Setup View
|
|
export function SetupView() {
|
|
const { currentStep, setCurrentStep, completeSetup } = useSetupStore();
|
|
const navigate = useNavigate();
|
|
|
|
// Simplified steps: welcome, theme, providers (combined), github, complete
|
|
const steps = ['welcome', 'theme', 'providers', 'github', 'complete'] as const;
|
|
type StepName = (typeof steps)[number];
|
|
|
|
const getStepName = (): StepName => {
|
|
// Map old step names to new consolidated steps
|
|
if (currentStep === 'welcome') return 'welcome';
|
|
if (currentStep === 'theme') return 'theme';
|
|
if (
|
|
currentStep === 'claude_detect' ||
|
|
currentStep === 'claude_auth' ||
|
|
currentStep === 'cursor' ||
|
|
currentStep === 'codex' ||
|
|
currentStep === 'opencode' ||
|
|
currentStep === 'providers'
|
|
) {
|
|
return 'providers';
|
|
}
|
|
if (currentStep === 'github') return 'github';
|
|
return 'complete';
|
|
};
|
|
|
|
const currentIndex = steps.indexOf(getStepName());
|
|
|
|
const handleNext = (from: string) => {
|
|
logger.debug('[Setup Flow] handleNext called from:', from, 'currentStep:', currentStep);
|
|
switch (from) {
|
|
case 'welcome':
|
|
logger.debug('[Setup Flow] Moving to theme step');
|
|
setCurrentStep('theme');
|
|
break;
|
|
case 'theme':
|
|
logger.debug('[Setup Flow] Moving to providers step');
|
|
setCurrentStep('providers');
|
|
break;
|
|
case 'providers':
|
|
logger.debug('[Setup Flow] Moving to github step');
|
|
setCurrentStep('github');
|
|
break;
|
|
case 'github':
|
|
logger.debug('[Setup Flow] Moving to complete step');
|
|
setCurrentStep('complete');
|
|
break;
|
|
}
|
|
};
|
|
|
|
const handleBack = (from: string) => {
|
|
logger.debug('[Setup Flow] handleBack called from:', from);
|
|
switch (from) {
|
|
case 'theme':
|
|
setCurrentStep('welcome');
|
|
break;
|
|
case 'providers':
|
|
setCurrentStep('theme');
|
|
break;
|
|
case 'github':
|
|
setCurrentStep('providers');
|
|
break;
|
|
}
|
|
};
|
|
|
|
const handleSkipGithub = () => {
|
|
logger.debug('[Setup Flow] Skipping GitHub setup');
|
|
setCurrentStep('complete');
|
|
};
|
|
|
|
const handleFinish = () => {
|
|
logger.debug('[Setup Flow] handleFinish called - completing setup');
|
|
completeSetup();
|
|
logger.debug('[Setup Flow] Setup completed, redirecting to dashboard');
|
|
navigate({ to: '/dashboard' });
|
|
};
|
|
|
|
return (
|
|
<div className="h-full flex flex-col content-bg" data-testid="setup-view">
|
|
{/* Header */}
|
|
<div className="shrink-0 border-b border-border bg-glass backdrop-blur-md titlebar-drag-region">
|
|
<div className="px-8 py-4">
|
|
<div className="flex items-center gap-3 titlebar-no-drag">
|
|
<img src="/logo.png" alt="Automaker" className="w-8 h-8" />
|
|
<span className="text-lg font-semibold text-foreground">Automaker Setup</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{/* Content */}
|
|
<div className="flex-1 overflow-y-auto min-h-0 flex items-center justify-center">
|
|
<div className="w-full max-w-2xl mx-auto px-8">
|
|
<div className="mb-8">
|
|
<StepIndicator currentStep={currentIndex} totalSteps={steps.length} />
|
|
</div>
|
|
|
|
<div>
|
|
{currentStep === 'welcome' && <WelcomeStep onNext={() => handleNext('welcome')} />}
|
|
|
|
{currentStep === 'theme' && (
|
|
<ThemeStep onNext={() => handleNext('theme')} onBack={() => handleBack('theme')} />
|
|
)}
|
|
|
|
{(currentStep === 'providers' ||
|
|
currentStep === 'claude_detect' ||
|
|
currentStep === 'claude_auth' ||
|
|
currentStep === 'cursor' ||
|
|
currentStep === 'codex' ||
|
|
currentStep === 'opencode') && (
|
|
<ProvidersSetupStep
|
|
onNext={() => handleNext('providers')}
|
|
onBack={() => handleBack('providers')}
|
|
/>
|
|
)}
|
|
|
|
{currentStep === 'github' && (
|
|
<GitHubSetupStep
|
|
onNext={() => handleNext('github')}
|
|
onBack={() => handleBack('github')}
|
|
onSkip={handleSkipGithub}
|
|
/>
|
|
)}
|
|
|
|
{currentStep === 'complete' && <CompleteStep onFinish={handleFinish} />}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|