diff --git a/src/browser/components/AppLoader.tsx b/src/browser/components/AppLoader.tsx
index 74b48d8103..89e20306b2 100644
--- a/src/browser/components/AppLoader.tsx
+++ b/src/browser/components/AppLoader.tsx
@@ -3,7 +3,7 @@ import App from "../App";
import { LoadingScreen } from "./LoadingScreen";
import { useWorkspaceStoreRaw } from "../stores/WorkspaceStore";
import { useGitStatusStoreRaw } from "../stores/GitStatusStore";
-import { ProjectProvider } from "../contexts/ProjectContext";
+import { ProjectProvider, useProjectContext } from "../contexts/ProjectContext";
import { APIProvider, useAPI, type APIClient } from "@/browser/contexts/API";
import { WorkspaceProvider, useWorkspaceContext } from "../contexts/WorkspaceContext";
@@ -41,6 +41,7 @@ export function AppLoader(props: AppLoaderProps) {
*/
function AppLoaderInner() {
const workspaceContext = useWorkspaceContext();
+ const projectContext = useProjectContext();
const { api } = useAPI();
// Get store instances
@@ -72,8 +73,8 @@ function AppLoaderInner() {
api,
]);
- // Show loading screen until stores are synced
- if (workspaceContext.loading || !storesSynced) {
+ // Show loading screen until both projects and workspaces are loaded and stores synced
+ if (projectContext.loading || workspaceContext.loading || !storesSynced) {
return ;
}
diff --git a/src/browser/contexts/ProjectContext.tsx b/src/browser/contexts/ProjectContext.tsx
index 39c36f85fb..1bfa2a2cfd 100644
--- a/src/browser/contexts/ProjectContext.tsx
+++ b/src/browser/contexts/ProjectContext.tsx
@@ -25,6 +25,8 @@ interface WorkspaceModalState {
export interface ProjectContext {
projects: Map;
+ /** True while initial project list is loading */
+ loading: boolean;
refreshProjects: () => Promise;
addProject: (normalizedPath: string, projectConfig: ProjectConfig) => void;
removeProject: (path: string) => Promise<{ success: boolean; error?: string }>;
@@ -58,6 +60,7 @@ function deriveProjectName(projectPath: string): string {
export function ProjectProvider(props: { children: ReactNode }) {
const { api } = useAPI();
const [projects, setProjects] = useState