From 7d8302ebdd7b630b1286c20ff615c55fcdb8218e Mon Sep 17 00:00:00 2001 From: Neko Ayaka Date: Sat, 28 Mar 2026 16:04:28 +0800 Subject: [PATCH] refactor(stage-ui,i18n): default to use force blink (our version) --- packages/i18n/src/locales/en/settings.yaml | 2 +- packages/i18n/src/locales/es/settings.yaml | 2 +- packages/i18n/src/locales/fr/settings.yaml | 2 +- packages/i18n/src/locales/ja/settings.yaml | 2 +- packages/i18n/src/locales/ko/settings.yaml | 2 +- packages/i18n/src/locales/ru/settings.yaml | 2 +- packages/i18n/src/locales/vi/settings.yaml | 2 +- .../i18n/src/locales/zh-Hant/settings.yaml | 2 +- .../use-versioned-local-storage/index.ts | 6 ++--- .../stage-ui/src/stores/settings/live2d.ts | 24 ++++++++++++++++--- 10 files changed, 32 insertions(+), 14 deletions(-) diff --git a/packages/i18n/src/locales/en/settings.yaml b/packages/i18n/src/locales/en/settings.yaml index d9d8279f0..0a54b60d5 100644 --- a/packages/i18n/src/locales/en/settings.yaml +++ b/packages/i18n/src/locales/en/settings.yaml @@ -108,7 +108,7 @@ live2d: title: FPS description: Limit rendering frame rate options: - unlimited: No Limit + unlimited: ∞ microphone: Microphone models: Model pages: diff --git a/packages/i18n/src/locales/es/settings.yaml b/packages/i18n/src/locales/es/settings.yaml index 29ed346c0..b5aa991f7 100644 --- a/packages/i18n/src/locales/es/settings.yaml +++ b/packages/i18n/src/locales/es/settings.yaml @@ -106,7 +106,7 @@ live2d: title: FPS description: Limitar velocidad de fotogramas options: - unlimited: Sin límite + unlimited: ∞ microphone: Micrófono models: Modelo pages: diff --git a/packages/i18n/src/locales/fr/settings.yaml b/packages/i18n/src/locales/fr/settings.yaml index ef9cc8e28..7ccda7a70 100644 --- a/packages/i18n/src/locales/fr/settings.yaml +++ b/packages/i18n/src/locales/fr/settings.yaml @@ -106,7 +106,7 @@ live2d: title: FPS description: Limiter la fréquence d'image du rendu options: - unlimited: Aucune Limite + unlimited: ∞ microphone: Microphone models: Modèle pages: diff --git a/packages/i18n/src/locales/ja/settings.yaml b/packages/i18n/src/locales/ja/settings.yaml index fcab3fc5c..8a2044e8d 100644 --- a/packages/i18n/src/locales/ja/settings.yaml +++ b/packages/i18n/src/locales/ja/settings.yaml @@ -106,7 +106,7 @@ live2d: title: FPS description: レンダリングフレームレートを制限 options: - unlimited: 制限なし + unlimited: ∞ microphone: マイク models: モデル pages: diff --git a/packages/i18n/src/locales/ko/settings.yaml b/packages/i18n/src/locales/ko/settings.yaml index cc419d180..0e8c10daa 100644 --- a/packages/i18n/src/locales/ko/settings.yaml +++ b/packages/i18n/src/locales/ko/settings.yaml @@ -106,7 +106,7 @@ live2d: title: FPS (초당 프레임) description: 렌더링 주사율 제한 options: - unlimited: 무제한 + unlimited: ∞ microphone: 마이크 models: 모델 pages: diff --git a/packages/i18n/src/locales/ru/settings.yaml b/packages/i18n/src/locales/ru/settings.yaml index e9c70df60..2d96fbd97 100644 --- a/packages/i18n/src/locales/ru/settings.yaml +++ b/packages/i18n/src/locales/ru/settings.yaml @@ -106,7 +106,7 @@ live2d: title: ФПС description: Ограничить скорость рендеринга кадров options: - unlimited: Без ограничений + unlimited: ∞ microphone: Микрофон models: Модель pages: diff --git a/packages/i18n/src/locales/vi/settings.yaml b/packages/i18n/src/locales/vi/settings.yaml index dacb87318..22a78b508 100644 --- a/packages/i18n/src/locales/vi/settings.yaml +++ b/packages/i18n/src/locales/vi/settings.yaml @@ -106,7 +106,7 @@ live2d: title: FPS description: Giới hạn tốc độ khung hình hiển thị options: - unlimited: Không giới hạn + unlimited: ∞ microphone: Micro models: Mô hình pages: diff --git a/packages/i18n/src/locales/zh-Hant/settings.yaml b/packages/i18n/src/locales/zh-Hant/settings.yaml index 28c152ad9..d2fcf42c4 100644 --- a/packages/i18n/src/locales/zh-Hant/settings.yaml +++ b/packages/i18n/src/locales/zh-Hant/settings.yaml @@ -106,7 +106,7 @@ live2d: title: FPS description: 限制渲染幀率 options: - unlimited: 無限制 + unlimited: ∞ microphone: 麥克風 models: 模型 pages: diff --git a/packages/stage-shared/src/composables/use-versioned-local-storage/index.ts b/packages/stage-shared/src/composables/use-versioned-local-storage/index.ts index 512126f93..9c98e219b 100644 --- a/packages/stage-shared/src/composables/use-versioned-local-storage/index.ts +++ b/packages/stage-shared/src/composables/use-versioned-local-storage/index.ts @@ -7,7 +7,7 @@ import { ref, toValue, watch } from 'vue' export interface Versioned { version?: string, data?: T } export interface UseVersionedStorageOptions { defaultVersion?: string - satisfiesVersionBy?: (version: string) => boolean + satisfiesVersionBy?: (beforeVersion: string, afterVersion: string) => boolean onVersionMismatch?: (value: Versioned) => OnVersionMismatchActions } @@ -27,7 +27,7 @@ export function useVersionedLocalStorage( watch(rawValue, (value) => { try { if ('version' in rawValue.value && rawValue.value.version != null) { - if (options?.satisfiesVersionBy != null && !options.satisfiesVersionBy(rawValue.value.version)) { + if (options?.satisfiesVersionBy != null && !options.satisfiesVersionBy(rawValue.value.version, defaultVersion)) { if (options.onVersionMismatch != null) { const action = options.onVersionMismatch(rawValue.value) if (action.action === 'reset') { @@ -36,7 +36,7 @@ export function useVersionedLocalStorage( } } else { - console.warn(`version ${rawValue.value.version} doesn't satisfy the version ${options.defaultVersion} for key ${key}, will reset the value to default value ${toValue(initialValue)}`) + console.warn(`version ${rawValue.value.version} doesn't satisfy the version ${defaultVersion} for key ${key}, will reset the value to default value ${toValue(initialValue)}`) rawValue.value = { version: defaultVersion, data: toValue(initialValue) } data.value = toValue(initialValue) } diff --git a/packages/stage-ui/src/stores/settings/live2d.ts b/packages/stage-ui/src/stores/settings/live2d.ts index e00f95be0..7dd7ddac1 100644 --- a/packages/stage-ui/src/stores/settings/live2d.ts +++ b/packages/stage-ui/src/stores/settings/live2d.ts @@ -1,11 +1,29 @@ -import { useLocalStorageManualReset } from '@proj-airi/stage-shared/composables' +import { useLocalStorageManualReset, useVersionedLocalStorageManualReset } from '@proj-airi/stage-shared/composables' import { defineStore } from 'pinia' export const useSettingsLive2d = defineStore('settings-live2d', () => { const live2dDisableFocus = useLocalStorageManualReset('settings/live2d/disable-focus', false) const live2dIdleAnimationEnabled = useLocalStorageManualReset('settings/live2d/idle-animation-enabled', true) - const live2dAutoBlinkEnabled = useLocalStorageManualReset('settings/live2d/auto-blink-enabled', true) - const live2dForceAutoBlinkEnabled = useLocalStorageManualReset('settings/live2d/force-auto-blink-enabled', false) + const live2dAutoBlinkEnabled = useVersionedLocalStorageManualReset('settings/live2d/auto-blink-enabled', false, { + defaultVersion: '2.0.0', + satisfiesVersionBy(beforeVersion, afterVersion) { + if (beforeVersion === afterVersion) { + return true + } + + return false + }, + }) + const live2dForceAutoBlinkEnabled = useVersionedLocalStorageManualReset('settings/live2d/force-auto-blink-enabled', true, { + defaultVersion: '2.0.0', + satisfiesVersionBy(beforeVersion, afterVersion) { + if (beforeVersion === afterVersion) { + return true + } + + return false + }, + }) const live2dShadowEnabled = useLocalStorageManualReset('settings/live2d/shadow-enabled', true) const live2dMaxFps = useLocalStorageManualReset('settings/live2d/max-fps', 0)