diff --git a/src/cli/tui/screens/deploy/useDeployFlow.ts b/src/cli/tui/screens/deploy/useDeployFlow.ts index 0da441d0..786c7076 100644 --- a/src/cli/tui/screens/deploy/useDeployFlow.ts +++ b/src/cli/tui/screens/deploy/useDeployFlow.ts @@ -122,6 +122,10 @@ export function useDeployFlow(options: DeployFlowOptions = {}): DeployFlowState const identityKmsKeyArn = preSynthesized?.identityKmsKeyArn ?? preflight.identityKmsKeyArn; const allCredentials = preSynthesized?.allCredentials ?? preflight.allCredentials; + const [preDeployDiffStep, setPreDeployDiffStep] = useState({ + label: 'Computing diff changes...', + status: 'pending', + }); const [publishAssetsStep, setPublishAssetsStep] = useState({ label: 'Publish assets', status: 'pending' }); const [deployStep, setDeployStep] = useState({ label: 'Deploy to AWS', status: 'pending' }); const [diffStep, setDiffStep] = useState({ label: 'Run CDK diff', status: 'pending' }); @@ -144,6 +148,7 @@ export function useDeployFlow(options: DeployFlowOptions = {}): DeployFlowState const streamOutputsRef = useRef | null>(null); const startDeploy = useCallback(() => { + setPreDeployDiffStep({ label: 'Computing diff changes...', status: 'pending' }); setPublishAssetsStep({ label: 'Publish assets', status: 'pending' }); setDeployStep({ label: 'Deploy to AWS', status: 'pending' }); setDeployOutput(null); @@ -327,6 +332,8 @@ export function useDeployFlow(options: DeployFlowOptions = {}): DeployFlowState if (!isDiffRunningRef.current) { isDiffRunningRef.current = true; setIsDiffLoading(true); + setPreDeployDiffStep(prev => ({ ...prev, status: 'running' })); + logger.startStep('Computing diff changes...'); switchableIoHost?.setOnRawMessage((code, _level, message, data) => { logger.logDiff(code, message); if (code === 'CDK_TOOLKIT_I4002') { @@ -345,6 +352,8 @@ export function useDeployFlow(options: DeployFlowOptions = {}): DeployFlowState switchableIoHost?.setOnRawMessage(null); isDiffRunningRef.current = false; setIsDiffLoading(false); + logger.endStep('success'); + setPreDeployDiffStep(prev => ({ ...prev, status: 'success' })); } } @@ -569,8 +578,10 @@ export function useDeployFlow(options: DeployFlowOptions = {}): DeployFlowState if (diffMode) { return skipPreflight ? [diffStep] : [...preflight.steps, diffStep]; } - return skipPreflight ? [publishAssetsStep, deployStep] : [...preflight.steps, publishAssetsStep, deployStep]; - }, [preflight.steps, publishAssetsStep, deployStep, diffStep, skipPreflight, diffMode]); + return skipPreflight + ? [preDeployDiffStep, publishAssetsStep, deployStep] + : [...preflight.steps, preDeployDiffStep, publishAssetsStep, deployStep]; + }, [preflight.steps, preDeployDiffStep, publishAssetsStep, deployStep, diffStep, skipPreflight, diffMode]); const phase: DeployPhase = useMemo(() => { const activeStep = diffMode ? diffStep : deployStep;