From 51df298e2851112cfead137b09fae9800dd0b2cd Mon Sep 17 00:00:00 2001 From: VELLANKI SANTHOSH Date: Sat, 10 Jan 2026 06:10:50 +0000 Subject: [PATCH] Fix template project creation returning to welcome screen When creating a project from templates (AI Agent, MCP AI Agent, or tutorials), clicking 'Create' would close the modal but return to the welcome screen instead of opening the template project. Root cause: useNewProjectFromTemplate hook was missing updates to openedProjectsState and openedProjectsSortedIdsState. While it set the project data correctly, the app thought no projects were open (openedProjectIds.length === 0), so it continued displaying the NoProject welcome screen. Fix: Add the same opened projects state management that useNewProject has: - Import and use openedProjectsState and openedProjectsSortedIdsState - Update opened projects registry with the new template project - Append new project ID to sorted IDs list This ensures template projects are properly tracked as opened and displayed. --- .../src/hooks/useNewProjectFromTemplate.ts | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/packages/app/src/hooks/useNewProjectFromTemplate.ts b/packages/app/src/hooks/useNewProjectFromTemplate.ts index d234f2885..f4c8b253c 100644 --- a/packages/app/src/hooks/useNewProjectFromTemplate.ts +++ b/packages/app/src/hooks/useNewProjectFromTemplate.ts @@ -1,5 +1,11 @@ -import { useSetAtom } from 'jotai'; -import { loadedProjectState, projectState } from '../state/savedGraphs.js'; +import { useSetAtom, useAtomValue } from 'jotai'; +import { + loadedProjectState, + projectState, + openedProjectsState, + openedProjectsSortedIdsState, + type OpenedProjectInfo, +} from '../state/savedGraphs.js'; import { type GraphId, type NodeGraph, @@ -18,6 +24,9 @@ import { nanoid } from 'nanoid'; export function useNewProjectFromTemplate() { const setProject = useSetAtom(projectState); const setLoadedProject = useSetAtom(loadedProjectState); + const currentIds = useAtomValue(openedProjectsSortedIdsState); + const setOpenedProjectsSortedIds = useSetAtom(openedProjectsSortedIdsState); + const setOpenedProjects = useSetAtom(openedProjectsState); const setGraphData = useSetAtom(graphState); const setTrivetData = useSetAtom(trivetState); @@ -66,13 +75,23 @@ export function useNewProjectFromTemplate() { }); setLoadedProject({ loaded: false, path: '' }); - setProject({ + const projectWithNewId = { ...project, metadata: { ...project.metadata, id: nanoid() as ProjectId, }, - }); + }; + setProject(projectWithNewId); + + const newOpenedProjects: Record = { + [projectWithNewId.metadata.id]: { + project: projectWithNewId, + fsPath: null, + }, + }; + setOpenedProjects(newOpenedProjects); + setOpenedProjectsSortedIds([...currentIds, projectWithNewId.metadata.id]); const firstGraph = orderBy(Object.values(project.graphs), (g) => g.metadata!.name!)[0];