feat: persistence selected mode

This commit is contained in:
Xiaohan-Tian
2025-12-10 21:54:16 -08:00
parent fa201d11c5
commit dcd2d89d0f
6 changed files with 87 additions and 14 deletions
@@ -1,5 +1,6 @@
import { KGProject } from '../KGProject';
import { upgradeToV1 } from './upgradeToV1';
import { upgradeToV2 } from './upgradeToV2';
/**
* Upgrade the given project to the latest structure version, one version at a time.
@@ -23,6 +24,10 @@ export function upgradeProjectToLatest(project: KGProject): KGProject {
workingProject = upgradeToV1(workingProject);
break;
}
case 2: {
workingProject = upgradeToV2(workingProject);
break;
}
default: {
// If an upgrader is missing, throw to prevent loading incompatible structures
throw new Error(`No upgrader found for project structure version ${nextVersion}`);
+20
View File
@@ -0,0 +1,20 @@
import { KGProject } from '../KGProject';
/**
* Upgrade a project from structure version 1 to 2.
* Adds the selectedMode field with default value "ionian".
*/
export function upgradeToV2(project: KGProject): KGProject {
try {
// Set default selectedMode to "ionian" if not already set
const currentMode = project.getSelectedMode?.();
if (!currentMode) {
project.setSelectedMode("ionian");
}
} finally {
// Always set the project structure version to 2 to mark migration complete
project.setProjectStructureVersion(2);
}
return project;
}