diff --git a/src/backend/common/ConfigManager.ts b/src/backend/common/ConfigManager.ts index e44530ad..a024d113 100644 --- a/src/backend/common/ConfigManager.ts +++ b/src/backend/common/ConfigManager.ts @@ -278,6 +278,7 @@ const migrations: [string, (store: Record) => unknown][] = [ [ ">=1.1", (config) => { + // プリセット機能を実験的機能から通常機能に const experimentalSetting = config.experimentalSetting as ExperimentalSettingType; @@ -307,7 +308,10 @@ const migrations: [string, (store: Record) => unknown][] = [ const presets = config.presets as ConfigType["presets"]; for (const preset of Object.values(presets.items)) { if (preset == undefined) throw new Error("preset == undefined"); - preset.pauseLengthScale = 1; + if (!("pauseLengthScale" in preset)) { + // @ts-expect-error 存在しない場合のみ追加する + preset.pauseLengthScale = 1; + } } return config; @@ -353,7 +357,7 @@ export abstract class BaseConfigManager { const data = await this.load(); const version = data.__internal__.migrations.version; for (const [versionRange, migration] of migrations) { - if (!semver.satisfies(version, versionRange)) { + if (!semver.satisfies(version, versionRange) || version === '999.999.999') { log.info(`Migrating ${version} to ${versionRange} ...`); migration(data); log.info(`Migrated ${version} to ${versionRange} successfully.`); diff --git a/src/domain/project/index.ts b/src/domain/project/index.ts index 4b5da7a3..f275975b 100644 --- a/src/domain/project/index.ts +++ b/src/domain/project/index.ts @@ -310,8 +310,10 @@ export const migrateProjectFileObject = async ( // ----- 以下は AivisSpeech 固有のマイグレーション処理 ----- - if (semver.satisfies(projectAppVersion, "<1.1.0", semverSatisfiesOptions)) { + // 1.1.0 未満 -> 1.1.0 以上へのマイグレーション (開発版のみ常にマイグレーションを実行する) + if (semver.satisfies(projectAppVersion, "<1.1.0", semverSatisfiesOptions) || projectAppVersion === '999.999.999') { + // AivisSpeech ではソング機能は封印されているが、実装上の都合で一応マイグレーションしている // tracks: Track[] -> tracks: Record + trackOrder: TrackId[] const newTracks: Record = {}; for (const track of projectData.song.tracks) { @@ -327,7 +329,9 @@ export const migrateProjectFileObject = async ( // 文内無音倍率の追加 for (const audioItemsKey in projectData.talk.audioItems) { - projectData.talk.audioItems[audioItemsKey].query.pauseLengthScale = 1; + if (!("pauseLengthScale" in projectData.talk.audioItems[audioItemsKey].query)) { + projectData.talk.audioItems[audioItemsKey].query.pauseLengthScale = 1; + } } } diff --git a/src/store/project.ts b/src/store/project.ts index 32d70bee..9de8b7ae 100755 --- a/src/store/project.ts +++ b/src/store/project.ts @@ -6,7 +6,6 @@ import { ProjectStoreState, ProjectStoreTypes, } from "@/store/type"; -import { TrackId } from "@/type/preload"; import path from "@/helpers/path"; import { getValueOrThrow, ResultError } from "@/type/result"; import { LatestProjectType } from "@/domain/project/schema"; @@ -14,19 +13,12 @@ import { migrateProjectFileObject, ProjectFileFormatError, } from "@/domain/project"; -import { - createDefaultTempo, - createDefaultTimeSignature, - createDefaultTrack, - DEFAULT_TPQN, -} from "@/sing/domain"; import { EditorType } from "@/type/preload"; import { IsEqual } from "@/type/utility"; import { showAlertDialog, showQuestionDialog, } from "@/components/Dialog/Dialog"; -import { uuid4 } from "@/helpers/random"; export const projectStoreState: ProjectStoreState = { savedLastCommandIds: { talk: null, song: null },