diff --git a/src/components/Dialog/ImportSongProjectDialog.vue b/src/components/Dialog/ImportSongProjectDialog.vue index cfc301db24..1d478bd18c 100644 --- a/src/components/Dialog/ImportSongProjectDialog.vue +++ b/src/components/Dialog/ImportSongProjectDialog.vue @@ -40,17 +40,10 @@ > <QItemSection avatar> <QCheckbox - v-if="multiTrackEnabled" v-model="selectedTrackIndexes" :val="track.value" :disable="track.disable" /> - <QRadio - v-else - v-model="selectedTrackIndex" - :val="track.value" - :disable="track.disable" - /> </QItemSection> <QItemSection> <QItemLabel> @@ -117,10 +110,6 @@ const { dialogRef, onDialogOK, onDialogCancel } = useDialogPluginComponent(); const store = useStore(); const log = createLogger("ImportExternalProjectDialog"); -const multiTrackEnabled = computed( - () => store.state.experimentalSetting.enableMultiTrack, -); - // 受け入れる拡張子 const acceptExtensions = computed( () => supportedExtensions.map((ext) => `.${ext}`).join(",") + ",.vvproj", @@ -243,23 +232,6 @@ const trackOptions = computed(() => { }); // 選択中のトラック const selectedTrackIndexes = ref<number[] | null>(null); -const selectedTrackIndex = computed<number | null>({ - get: () => { - if (selectedTrackIndexes.value == null) { - return null; - } - if (selectedTrackIndexes.value.length === 0) { - return null; - } - return selectedTrackIndexes.value[0]; - }, - set: (index: number | null) => { - if (index == null) { - throw new Error("assert: index != null"); - } - selectedTrackIndexes.value = [index]; - }, -}); // データ初期化 const initializeValues = () => { diff --git a/src/components/Dialog/SettingDialog/SettingDialog.vue b/src/components/Dialog/SettingDialog/SettingDialog.vue index 35fcc8f73d..81a819356c 100644 --- a/src/components/Dialog/SettingDialog/SettingDialog.vue +++ b/src/components/Dialog/SettingDialog/SettingDialog.vue @@ -59,24 +59,10 @@ }}はCPU版のためGPUモードを利用できません。 </QTooltip> </ButtonToggleCell> - <QCardActions class="q-px-md bg-surface"> - <div>音声のサンプリングレート</div> - <div - aria-label="再生と保存時の音声のサンプリングレートを変更できます(サンプリングレートを上げても音声の品質は上がりません)。" - > - <QIcon name="help_outline" size="sm" class="help-hover-icon"> - <QTooltip - :delay="500" - anchor="center right" - self="center left" - transitionShow="jump-right" - transitionHide="jump-left" - > - 再生・保存時の音声のサンプリングレートを変更できます(サンプリングレートを上げても音声の品質は上がりません)。 - </QTooltip> - </QIcon> - </div> - <QSpace /> + <BaseCell + title="音声のサンプリングレート" + description="再生と保存時の音声のサンプリングレートを変更できます(サンプリングレートを上げても音声の品質は上がりません)。" + > <QSelect v-model="outputSamplingRate" borderless @@ -86,7 +72,7 @@ :optionLabel="renderSamplingRateLabel" > </QSelect> - </QCardActions> + </BaseCell> </QCard> <!-- Preservation Setting --> <QCard flat class="setting-card"> @@ -371,19 +357,12 @@ " /> - <QSlideTransition> - <!-- q-slide-transitionはheightだけをアニメーションするのでdivで囲う --> - <div v-show="experimentalSetting.enableMultiTrack"> - <EditButtonCell - title="ソング:トラックファイル名パターン" - description="書き出す際のファイル名のパターンをカスタマイズできます。" - :currentValue="savingSetting.songTrackFileNamePattern" - @buttonClick=" - showSongTrackAudioFilePatternEditDialog = true - " - /> - </div> - </QSlideTransition> + <EditButtonCell + title="ソング:トラックファイル名パターン" + description="書き出す際のファイル名のパターンをカスタマイズできます。" + :currentValue="savingSetting.songTrackFileNamePattern" + @buttonClick="showSongTrackAudioFilePatternEditDialog = true" + /> </QCard> <!-- Theme Card --> <QCard flat class="setting-card"> @@ -471,22 +450,17 @@ > </QSelect> </QCardActions> - <QSlideTransition> - <!-- q-slide-transitionはheightだけをアニメーションするのでdivで囲う --> - <div v-show="experimentalSetting.enableMultiTrack"> - <BaseCell - title="ソング:元に戻すトラック操作" - description="「元に戻す」機能の対象とするトラック操作を指定します。" - > - <QOptionGroup - v-model="undoableTrackOperations" - type="checkbox" - :options="undoableTrackOperationsLabels" - inline - /> - </BaseCell> - </div> - </QSlideTransition> + <BaseCell + title="ソング:元に戻すトラック操作" + description="「元に戻す」機能の対象とするトラック操作を指定します。" + > + <QOptionGroup + v-model="undoableTrackOperations" + type="checkbox" + :options="undoableTrackOperationsLabels" + inline + /> + </BaseCell> </QCard> <!-- Experimental Card --> @@ -534,17 +508,6 @@ ) " /> - <ToggleCell - title="ソング:マルチトラック機能" - description="ONの場合、1つのプロジェクト内に複数のトラックを作成できるようにします。" - :modelValue="experimentalSetting.enableMultiTrack" - :disable="!canToggleMultiTrack" - @update:modelValue="setMultiTrack($event)" - > - <QTooltip v-if="!canToggleMultiTrack" :delay="500"> - 現在のプロジェクトに複数のトラックが存在するため、無効化できません。 - </QTooltip> - </ToggleCell> </QCard> <QCard flat class="setting-card"> <QCardActions> @@ -939,23 +902,6 @@ const selectedEngineId = computed({ const renderEngineNameLabel = (engineId: EngineId) => { return engineInfos.value[engineId].name; }; - -// トラックが複数あるときはマルチトラック機能を無効化できないようにする -const canToggleMultiTrack = computed(() => { - if (!experimentalSetting.value.enableMultiTrack) { - return true; - } - - return store.state.tracks.size <= 1; -}); - -const setMultiTrack = (enableMultiTrack: boolean) => { - void changeExperimentalSetting("enableMultiTrack", enableMultiTrack); - // 無効化するときはUndo/Redoをクリアする - if (!enableMultiTrack) { - void store.dispatch("CLEAR_UNDO_HISTORY"); - } -}; </script> <style scoped lang="scss"> diff --git a/src/components/Sing/SingEditor.vue b/src/components/Sing/SingEditor.vue index 7c577aa484..2fa6b79dfb 100644 --- a/src/components/Sing/SingEditor.vue +++ b/src/components/Sing/SingEditor.vue @@ -42,7 +42,7 @@ </template> <script setup lang="ts"> -import { computed, ref } from "vue"; +import { computed, ref, watch } from "vue"; import ToolBar from "./ToolBar/ToolBar.vue"; import ScoreSequencer from "./ScoreSequencer.vue"; import SideBar from "./SideBar/SideBar.vue"; @@ -62,11 +62,7 @@ const props = defineProps<{ const store = useStore(); -const isSidebarOpen = computed( - () => - store.state.experimentalSetting.enableMultiTrack && - store.state.isSongSidebarOpen, -); +const isSidebarOpen = computed(() => store.state.isSongSidebarOpen); const sidebarWidth = ref(300); const setSidebarWidth = (width: number) => { @@ -75,6 +71,16 @@ const setSidebarWidth = (width: number) => { } }; +// トラック数が1から増えたら、サイドバーを開く +watch( + () => store.state.tracks.size, + (tracksSize, oldTracksSize) => { + if (oldTracksSize <= 1 && tracksSize > 1) { + void store.dispatch("SET_SONG_SIDEBAR_OPEN", { isSongSidebarOpen: true }); + } + }, +); + const nowRendering = computed(() => { return store.state.nowRendering; }); diff --git a/src/components/Sing/ToolBar/ToolBar.vue b/src/components/Sing/ToolBar/ToolBar.vue index 6e74cefc44..4488a81174 100644 --- a/src/components/Sing/ToolBar/ToolBar.vue +++ b/src/components/Sing/ToolBar/ToolBar.vue @@ -3,7 +3,6 @@ <!-- configs for entire song --> <div class="sing-configs"> <QBtn - v-if="multiTrackEnabled" class="q-mr-sm" :icon="isSidebarOpen ? 'menu_open' : 'menu'" round @@ -189,10 +188,6 @@ const editor = "song"; const canUndo = computed(() => store.getters.CAN_UNDO(editor)); const canRedo = computed(() => store.getters.CAN_REDO(editor)); -const multiTrackEnabled = computed( - () => store.state.experimentalSetting.enableMultiTrack, -); - const { registerHotkeyWithCleanup } = useHotkeyManager(); registerHotkeyWithCleanup({ editor, diff --git a/src/components/Sing/menuBarData.ts b/src/components/Sing/menuBarData.ts index 8a246be18d..fd8d451e4d 100644 --- a/src/components/Sing/menuBarData.ts +++ b/src/components/Sing/menuBarData.ts @@ -35,37 +35,33 @@ export const useMenuBarData = () => { await store.dispatch("EXPORT_STEM_WAVE_FILE", {}); }; - const fileSubMenuData = computed<MenuItemData[]>(() => - ( - [ - { - type: "button", - label: "音声を出力", - onClick: () => { - void exportWaveFile(); - }, - disableWhenUiLocked: true, - }, - store.state.experimentalSetting.enableMultiTrack && { - type: "button", - label: "トラックごとに音声を出力", - onClick: () => { - void exportStemWaveFile(); - }, - disableWhenUiLocked: true, - }, - { type: "separator" }, - { - type: "button", - label: "インポート", - onClick: () => { - void importExternalSongProject(); - }, - disableWhenUiLocked: true, - }, - ] satisfies (MenuItemData | false)[] - ).filter((item) => !!item), - ); + const fileSubMenuData = computed<MenuItemData[]>(() => [ + { + type: "button", + label: "音声を出力", + onClick: () => { + void exportWaveFile(); + }, + disableWhenUiLocked: true, + }, + { + type: "button", + label: "トラックごとに音声を出力", + onClick: () => { + void exportStemWaveFile(); + }, + disableWhenUiLocked: true, + }, + { type: "separator" }, + { + type: "button", + label: "インポート", + onClick: () => { + void importExternalSongProject(); + }, + disableWhenUiLocked: true, + }, + ]); const editSubMenuData = computed<MenuItemData[]>(() => [ { type: "separator" }, diff --git a/src/store/project.ts b/src/store/project.ts index a8188729a7..4c49d4d3cb 100755 --- a/src/store/project.ts +++ b/src/store/project.ts @@ -168,7 +168,7 @@ export const projectStore = createPartialStore<ProjectStoreTypes>({ */ action: createUILockAction( async ( - { actions, mutations, state, getters }, + { actions, mutations, getters }, { filePath, confirm }: { filePath?: string; confirm?: boolean }, ) => { if (!filePath) { @@ -197,20 +197,6 @@ export const projectStore = createPartialStore<ProjectStoreTypes>({ projectJson: text, }); - if ( - !state.experimentalSetting.enableMultiTrack && - parsedProjectData.song.trackOrder.length > 1 - ) { - await window.backend.showMessageDialog({ - type: "error", - title: "エラー", - message: - "このプロジェクトはマルチトラック機能を使用して作成されていますが、現在の設定ではマルチトラック機能を使用できません。\n" + - "設定の「ソング:マルチトラック機能」を有効にしてからプロジェクトを読み込んでください。", - }); - return false; - } - if (confirm !== false && getters.IS_EDITED) { const result = await actions.SAVE_OR_DISCARD_PROJECT_FILE({ additionalMessage: diff --git a/src/store/setting.ts b/src/store/setting.ts index cb4e920bdb..f2e150192e 100644 --- a/src/store/setting.ts +++ b/src/store/setting.ts @@ -47,7 +47,6 @@ export const settingStoreState: SettingStoreState = { enableMorphing: false, enableMultiSelect: false, shouldKeepTuningOnTextChange: false, - enableMultiTrack: false, }, splitTextWhenPaste: "PERIOD_AND_NEW_LINE", splitterPosition: { diff --git a/src/store/singing.ts b/src/store/singing.ts index d35e61994f..a8b83aad0a 100644 --- a/src/store/singing.ts +++ b/src/store/singing.ts @@ -377,12 +377,8 @@ const generateAudioSequence = async ( * `tracks`と`trackChannelStrips`を同期する。 * シーケンスが存在する場合は、ChannelStripとシーケンスの接続・接続の解除を行う。 * @param tracks `state`の`tracks` - * @param enableMultiTrack マルチトラックが有効かどうか */ -const syncTracksAndTrackChannelStrips = ( - tracks: Map<TrackId, Track>, - enableMultiTrack: boolean, -) => { +const syncTracksAndTrackChannelStrips = (tracks: Map<TrackId, Track>) => { if (audioContext == undefined) { throw new Error("audioContext is undefined."); } @@ -410,15 +406,9 @@ const syncTracksAndTrackChannelStrips = ( } const channelStrip = getOrThrow(trackChannelStrips, trackId); - if (enableMultiTrack) { - channelStrip.volume = track.gain; - channelStrip.pan = track.pan; - channelStrip.mute = !shouldPlays.has(trackId); - } else { - channelStrip.volume = 1; - channelStrip.pan = 0; - channelStrip.mute = false; - } + channelStrip.volume = track.gain; + channelStrip.pan = track.pan; + channelStrip.mute = !shouldPlays.has(trackId); } for (const [trackId, channelStrip] of trackChannelStrips) { if (!tracks.has(trackId)) { @@ -1358,10 +1348,7 @@ export const singingStore = createPartialStore<SingingStoreTypes>({ SYNC_TRACKS_AND_TRACK_CHANNEL_STRIPS: { async action({ state }) { - syncTracksAndTrackChannelStrips( - state.tracks, - state.experimentalSetting.enableMultiTrack, - ); + syncTracksAndTrackChannelStrips(state.tracks); }, }, @@ -2005,7 +1992,7 @@ export const singingStore = createPartialStore<SingingStoreTypes>({ sampleRate, renderDuration, withLimiter, - state.experimentalSetting.enableMultiTrack, + true, state.tracks, state.phrases, phraseSingingVoices, @@ -2141,7 +2128,7 @@ export const singingStore = createPartialStore<SingingStoreTypes>({ sampleRate, renderDuration, withLimiter, - state.experimentalSetting.enableMultiTrack, + true, new Map([[trackId, { ...track, solo: false, mute: false }]]), new Map( [...state.phrases.entries()].filter( @@ -2841,32 +2828,23 @@ export const singingCommandStore = transformCommandStore( | { overwrite: true; prevTrackId?: undefined } | { overwrite?: false; prevTrackId: TrackId } ))[] = []; - if (state.experimentalSetting.enableMultiTrack) { - let prevTrackId = getters.SELECTED_TRACK_ID; - for (const [i, track] of tracks.entries()) { - if (!isValidTrack(track)) { - throw new Error("The track is invalid."); - } - // 空のプロジェクトならトラックを上書きする - if (i === 0 && isTracksEmpty([...state.tracks.values()])) { - payload.push({ - track, - trackId: prevTrackId, - overwrite: true, - }); - } else { - const { trackId } = await actions.CREATE_TRACK(); - payload.push({ track, trackId, prevTrackId }); - prevTrackId = trackId; - } + let prevTrackId = getters.SELECTED_TRACK_ID; + for (const [i, track] of tracks.entries()) { + if (!isValidTrack(track)) { + throw new Error("The track is invalid."); + } + // 空のプロジェクトならトラックを上書きする + if (i === 0 && isTracksEmpty([...state.tracks.values()])) { + payload.push({ + track, + trackId: prevTrackId, + overwrite: true, + }); + } else { + const { trackId } = await actions.CREATE_TRACK(); + payload.push({ track, trackId, prevTrackId }); + prevTrackId = trackId; } - } else { - // マルチトラックが無効な場合は最初のトラックのみをインポートする - payload.push({ - track: tracks[0], - trackId: getters.SELECTED_TRACK_ID, - overwrite: true, - }); } mutations.COMMAND_IMPORT_TRACKS({ diff --git a/src/type/preload.ts b/src/type/preload.ts index 64dd56546c..fac2c9b288 100644 --- a/src/type/preload.ts +++ b/src/type/preload.ts @@ -563,7 +563,6 @@ export const experimentalSettingSchema = z.object({ enableMorphing: z.boolean().default(false), enableMultiSelect: z.boolean().default(false), shouldKeepTuningOnTextChange: z.boolean().default(false), - enableMultiTrack: z.boolean().default(false), }); export type ExperimentalSettingType = z.infer<typeof experimentalSettingSchema>; diff --git "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\346\233\270\343\201\215\345\207\272\343\201\227\343\203\225\343\202\241\343\202\244\343\203\253\345\220\215\343\203\221\343\202\277\343\203\274\343\203\263.spec.ts" "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\346\233\270\343\201\215\345\207\272\343\201\227\343\203\225\343\202\241\343\202\244\343\203\253\345\220\215\343\203\221\343\202\277\343\203\274\343\203\263.spec.ts" index b12238b34a..64765bf217 100644 --- "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\346\233\270\343\201\215\345\207\272\343\201\227\343\203\225\343\202\241\343\202\244\343\203\253\345\220\215\343\203\221\343\202\277\343\203\274\343\203\263.spec.ts" +++ "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\346\233\270\343\201\215\345\207\272\343\201\227\343\203\225\343\202\241\343\202\244\343\203\253\345\220\215\343\203\221\343\202\277\343\203\274\343\203\263.spec.ts" @@ -9,7 +9,10 @@ test.beforeEach(gotoHome); * 書き出しファイル名パターンダイアログまで移動 */ const moveToFilenameDialog = async (page: Page, settingDialog: Locator) => { - await settingDialog.getByRole("button", { name: "編集する" }).click(); + await settingDialog + .locator("div.q-card__actions", { hasText: "書き出しファイル名パターン" }) + .getByRole("button", { name: "編集する" }) + .click(); await page.waitForTimeout(500); const filenameDialog = getNewestQuasarDialog(page); diff --git "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-1-browser-win32.png" "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-1-browser-win32.png" index 71a58b35e6..e8a20a12b8 100644 Binary files "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-1-browser-win32.png" and "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-1-browser-win32.png" differ diff --git "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-2-browser-win32.png" "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-2-browser-win32.png" index 13df9b9334..48cc112d90 100644 Binary files "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-2-browser-win32.png" and "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-2-browser-win32.png" differ diff --git "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-3-browser-win32.png" "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-3-browser-win32.png" index 8ae071a21b..733bb6505e 100644 Binary files "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-3-browser-win32.png" and "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-3-browser-win32.png" differ diff --git "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-4-browser-win32.png" "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-4-browser-win32.png" index 8ae071a21b..733bb6505e 100644 Binary files "a/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-4-browser-win32.png" and "b/tests/e2e/browser/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260/\350\250\255\345\256\232\343\203\200\343\202\244\343\202\242\343\203\255\343\202\260.spec.ts-snapshots/\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210-4-browser-win32.png" differ