diff --git a/apps/ui/src/components/views/spec-view.tsx b/apps/ui/src/components/views/spec-view.tsx index 1a2d24ca..189e0f9a 100644 --- a/apps/ui/src/components/views/spec-view.tsx +++ b/apps/ui/src/components/views/spec-view.tsx @@ -14,7 +14,7 @@ export function SpecView() { const { currentProject, appSpec } = useAppStore(); // Loading state - const { isLoading, specExists, loadSpec } = useSpecLoading(); + const { isLoading, specExists, isGenerationRunning, loadSpec } = useSpecLoading(); // Save state const { isSaving, hasChanges, saveSpec, handleChange, setHasChanges } = useSpecSave(); @@ -82,15 +82,20 @@ export function SpecView() { ); } - // Empty state - no spec exists - if (!specExists) { + // Empty state - no spec exists or generation is running + // When generation is running, we skip loading the spec to avoid 500 errors, + // so we show the empty state with generation indicator + if (!specExists || isGenerationRunning) { + // If generation is running (from loading hook check), ensure we show the generating UI + const showAsGenerating = isCreating || isGenerationRunning; + return ( <> setShowCreateDialog(true)} /> diff --git a/apps/ui/src/components/views/spec-view/hooks/use-spec-loading.ts b/apps/ui/src/components/views/spec-view/hooks/use-spec-loading.ts index 01abbfbe..52826020 100644 --- a/apps/ui/src/components/views/spec-view/hooks/use-spec-loading.ts +++ b/apps/ui/src/components/views/spec-view/hooks/use-spec-loading.ts @@ -9,6 +9,7 @@ export function useSpecLoading() { const { currentProject, setAppSpec } = useAppStore(); const [isLoading, setIsLoading] = useState(true); const [specExists, setSpecExists] = useState(true); + const [isGenerationRunning, setIsGenerationRunning] = useState(false); const loadSpec = useCallback(async () => { if (!currentProject) return; @@ -16,6 +17,21 @@ export function useSpecLoading() { setIsLoading(true); try { const api = getElectronAPI(); + + // Check if spec generation is running before trying to load + // This prevents showing "No App Specification Found" during generation + if (api.specRegeneration) { + const status = await api.specRegeneration.status(); + if (status.success && status.isRunning) { + logger.debug('Spec generation is running, skipping load'); + setIsGenerationRunning(true); + setIsLoading(false); + return; + } + } + // Always reset when generation is not running (handles edge case where api.specRegeneration might not be available) + setIsGenerationRunning(false); + const result = await api.readFile(`${currentProject.path}/.automaker/app_spec.txt`); if (result.success && result.content) { @@ -42,6 +58,7 @@ export function useSpecLoading() { isLoading, specExists, setSpecExists, + isGenerationRunning, loadSpec, }; }