@@ -32,6 +32,7 @@ import { showContextMenu } from './components/GlobalContextMenu';
3232import * as fileStorage from './store/fileStorage.js';
3333import * as folderPersistence from './services/folderPersistence.js';
3434import workspaceService from './services/WorkspaceService.js';
35+ import gitFederationService from './services/gitFederationService.js';
3536import { pickFolder, getFileInFolder, listFilesInFolder } from './utils/fileAccessAdapter.js';
3637import AutoGraphModal from './components/AutoGraphModal';
3738import ForceSimulationModal from './components/ForceSimulationModal';
@@ -13392,52 +13393,41 @@ function NodeCanvas() {
1339213393 try {
1339313394 if (folderPath) {
1339413395 // 1. Link the folder using WorkspaceService
13395- // If folderPath is a handle object (web), check if we need to persist it differently?
13396- // WorkspaceService handles storeFolderHandle call.
13397- // Wait, previous implementation passed path/handle.
1339813396 await workspaceService.linkFolder(folderPath);
1339913397
13400- // 2. Create Universe file & config using provided name
13401- // Ensure name is valid
13402- const safeName = (universeName && universeName.trim()) ? universeName.trim() : "MyUniverse";
13398+ // 2. Create Universe using gitFederationService so it appears in UniversesList
13399+ const safeName = (universeName && universeName.trim()) ? universeName.trim() : "Universe";
1340313400
13404- const emptyState = {
13405- graph: {
13406- id: 'root',
13407- nodes: new Map(),
13408- edges: new Map()
13409- },
13410- nodePrototypes: new Map(),
13411- graphRegistry: new Map([['root', { id: 'root', nodes: new Map(), edges: new Map() }]]),
13412- nodeDefinitionIndices: new Map()
13413- };
13401+ // This registers the universe with universeBackendBridge
13402+ const result = await gitFederationService.createUniverse(safeName, {
13403+ enableLocal: true,
13404+ enableGit: false,
13405+ sourceOfTruth: 'local'
13406+ });
1341413407
13415- // Create the file. This creates the file on disk.
13416- const filename = await workspaceService.createUniverse(safeName, emptyState);
13408+ console.log('[NodeCanvas] Universe created via gitFederationService:', result);
1341713409
13418- // 4. Load the new universe state into memory
13419- storeActions.loadUniverseFromFile(emptyState);
13410+ // 3. Update store state
1342013411 storeActions.setStorageMode('folder');
13421- // Set connected to true, but we are in "file" mode essentially.
1342213412 storeActions.setUniverseConnected(true);
13413+ storeActions.setUniverseLoaded(true, true); // Set hasUniverseFile=true to exit loading screen
13414+
13415+ // 4. Mark onboarding as complete
13416+ if (typeof window !== 'undefined') {
13417+ localStorage.setItem(getStorageKey('redstring-alpha-welcome-seen'), 'true');
13418+ }
1342313419
1342413420 // 5. Close modal and open Panel
1342513421 setShowStorageSetupModal(false);
1342613422 setLeftPanelExpanded(true);
1342713423
13428- // FORCE REFRESH of file list in Universe Grid (if possible)
13429- // The Universes Tab (LeftPanel -> SemanticDiscoveryView) likely re-fetches on mount or visibility change.
13430- // Since we're switching view to 'grid', it *should* re-fetch.
13431- // But if it's already mounted, we might need a signal.
13432- // For now, let's rely on view switch.
13433-
1343413424 setTimeout(() => {
1343513425 if (leftPanelRef.current) {
1343613426 leftPanelRef.current.setActiveView('federation');
1343713427 }
1343813428 }, 100);
1343913429
13440- console.log('[NodeCanvas] Workspace setup complete. Active universe:', filename );
13430+ console.log('[NodeCanvas] Workspace setup complete. Active universe:', safeName );
1344113431 }
1344213432 } catch (error) {
1344313433 console.error('[NodeCanvas] Folder setup failed:', error);
0 commit comments