From 231a9a686f726cc539b35a40022907579ff4abce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E6=B6=9B?= Date: Sat, 18 Apr 2026 21:58:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=94=AE=E5=90=8D=E5=86=B2=E7=AA=81=EF=BC=9A?= =?UTF-8?q?=E5=B0=86theme=E6=94=B9=E4=B8=BAuiTheme=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E4=B8=8EiFlow=E5=86=85=E9=83=A8=E9=85=8D=E7=BD=AE=E5=86=B2?= =?UTF-8?q?=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 12 ++++++------ src/views/GeneralSettings.test.js | 17 ++++++++--------- src/views/GeneralSettings.vue | 6 +++--- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/App.vue b/src/App.vue index 92b4a47..8f75878 100644 --- a/src/App.vue +++ b/src/App.vue @@ -62,7 +62,7 @@ const { locale, t } = useI18n() const settings = ref({ language: 'zh-CN', - theme: 'Xcode', + uiTheme: 'Light', bootAnimationShown: true, checkpointing: { enabled: true }, mcpServers: {}, @@ -263,7 +263,7 @@ const loadSettings = async () => { if (!data.checkpointing) data.checkpointing = { enabled: true } if (!data.mcpServers) data.mcpServers = {} if (data.language === undefined) data.language = 'zh-CN' - if (data.theme === undefined) data.theme = 'Xcode' + if (data.uiTheme === undefined) data.uiTheme = 'Light' if (data.bootAnimationShown === undefined) data.bootAnimationShown = true if (!data.selectedAuthType) data.selectedAuthType = 'openai-compatible' if (data.apiKey === undefined) data.apiKey = '' @@ -308,7 +308,7 @@ const showSection = section => { const serverCount = computed(() => (settings.value.mcpServers ? Object.keys(settings.value.mcpServers).length : 0)) const themeClass = computed(() => { - const theme = settings.value.theme + const theme = settings.value.uiTheme if (theme === 'Dark') return 'dark' if (theme === 'Solarized Dark') return 'solarized-dark' return '' @@ -318,7 +318,7 @@ const acrylicStyle = computed(() => { const intensity = settings.value.acrylicIntensity if (intensity === undefined || intensity === null) return {} const opacity = 1 - intensity / 100 - const isDark = settings.value.theme === 'Dark' + const isDark = settings.value.uiTheme === 'Dark' if (isDark) { return { @@ -471,7 +471,7 @@ const closeMessageDialog = () => { } watch( - () => settings.value.theme, + () => settings.value.uiTheme, theme => { const cls = themeClass.value if (cls) { @@ -496,7 +496,7 @@ const applyAcrylicStyle = () => { const intensity = settings.value.acrylicIntensity if (intensity === undefined || intensity === null) return const opacity = 1 - intensity / 100 - const isDark = settings.value.theme === 'Dark' + const isDark = settings.value.uiTheme === 'Dark' const root = document.documentElement if (isDark) { diff --git a/src/views/GeneralSettings.test.js b/src/views/GeneralSettings.test.js index 4d05aea..36b7dda 100644 --- a/src/views/GeneralSettings.test.js +++ b/src/views/GeneralSettings.test.js @@ -6,9 +6,10 @@ import GeneralSettings from './GeneralSettings.vue'; describe('GeneralSettings.vue', () => { const mockSettings = { language: 'zh-CN', - theme: 'Xcode', + uiTheme: 'Light', bootAnimationShown: true, checkpointing: { enabled: true }, + acrylicIntensity: 50, }; it('renders correctly with props', () => { @@ -60,11 +61,9 @@ describe('GeneralSettings.vue', () => { }); const themeOptions = wrapper.findAll('.form-select')[1].findAll('option'); - expect(themeOptions.length).toBe(4); - expect(themeOptions[0].attributes('value')).toBe('Xcode'); + expect(themeOptions.length).toBe(2); + expect(themeOptions[0].attributes('value')).toBe('Light'); expect(themeOptions[1].attributes('value')).toBe('Dark'); - expect(themeOptions[2].attributes('value')).toBe('Light'); - expect(themeOptions[3].attributes('value')).toBe('Solarized Dark'); }); it('reflects current settings in form controls', async () => { @@ -82,7 +81,7 @@ describe('GeneralSettings.vue', () => { await nextTick(); const selectElements = wrapper.findAll('.form-select'); expect(selectElements[0].element.value).toBe('zh-CN'); - expect(selectElements[1].element.value).toBe('Xcode'); + expect(selectElements[1].element.value).toBe('Light'); expect(selectElements[2].element.value).toBe('true'); expect(selectElements[3].element.value).toBe('true'); }); @@ -149,9 +148,9 @@ describe('GeneralSettings.vue', () => { }, }); - expect(wrapper.findAll('.form-row').length).toBe(2); - expect(wrapper.findAll('.form-group').length).toBe(4); - expect(wrapper.findAll('.form-label').length).toBe(4); + expect(wrapper.findAll('.form-row').length).toBe(3); + expect(wrapper.findAll('.form-group').length).toBe(5); + expect(wrapper.findAll('.form-label').length).toBe(5); expect(wrapper.findAll('.form-select').length).toBe(4); }); }); diff --git a/src/views/GeneralSettings.vue b/src/views/GeneralSettings.vue index 2da314c..8165412 100644 --- a/src/views/GeneralSettings.vue +++ b/src/views/GeneralSettings.vue @@ -20,7 +20,7 @@
- @@ -89,7 +89,7 @@ const localSettings = computed({ }) const supportsAcrylic = computed(() => { - return typeof document !== 'undefined' && 'backdropFilter' in document.documentElement.style && props.settings.theme !== 'Dark' + return typeof document !== 'undefined' && 'backdropFilter' in document.documentElement.style && props.settings.uiTheme !== 'Dark' }) const sliderRef = ref(null) @@ -109,7 +109,7 @@ onMounted(() => { }) watch( - () => props.settings.theme, + () => props.settings.uiTheme, () => { nextTick(() => { if (sliderRef.value && supportsAcrylic.value) {