From cb3eedfcb808f1ca20b087d64af48c13a20121a4 Mon Sep 17 00:00:00 2001 From: ezequielnick <107352853+ezequielnick@users.noreply.github.com> Date: Tue, 12 Aug 2025 09:20:36 +0800 Subject: [PATCH] chore: delete debug log --- changelog.md | 1 + src/main/resolve/floatingWindow.ts | 132 ++++++++--------------------- 2 files changed, 36 insertions(+), 97 deletions(-) diff --git a/changelog.md b/changelog.md index 3749015..a172200 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ ### 新功能 (Feat) - 如果当前没有以管理员模式运行,TUN 开关保持关闭 +- 区分 app 日志与 core 日志输出为不同文件 ### 修复 (Fix) - 修复某些系统下的悬浮窗开启崩溃的问题 diff --git a/src/main/resolve/floatingWindow.ts b/src/main/resolve/floatingWindow.ts index 0bf6e6c..e3e4876 100644 --- a/src/main/resolve/floatingWindow.ts +++ b/src/main/resolve/floatingWindow.ts @@ -9,30 +9,19 @@ import { floatingWindowLogger } from '../utils/logger' export let floatingWindow: BrowserWindow | null = null -// 悬浮窗日志记录 - 使用统一的日志工具 -async function logFloatingWindow(message: string, error?: any): Promise { - await floatingWindowLogger.log(message, error) +function logError(message: string, error?: any): void { + floatingWindowLogger.log(`FloatingWindow Error: ${message}`, error).catch(() => {}) } async function createFloatingWindow(): Promise { try { - await logFloatingWindow('Starting to create floating window...') - const floatingWindowState = windowStateKeeper({ - file: 'floating-window-state.json' - }) - await logFloatingWindow('Window state keeper initialized') + const floatingWindowState = windowStateKeeper({ file: 'floating-window-state.json' }) const { customTheme = 'default.css', floatingWindowCompatMode = true } = await getAppConfig() - await logFloatingWindow(`App config loaded, theme: ${customTheme}, compatMode: ${floatingWindowCompatMode}`) const safeMode = process.env.FLOATING_SAFE_MODE === 'true' - const forceWin10Mode = process.env.FLOATING_WIN10_MODE === 'true' - const useCompatMode = floatingWindowCompatMode || forceWin10Mode || safeMode - - await logFloatingWindow(`Safe mode: ${safeMode}`) - await logFloatingWindow(`Force Win10 mode: ${forceWin10Mode}`) - await logFloatingWindow(`Compat mode from config: ${floatingWindowCompatMode}`) - await logFloatingWindow(`Platform: ${process.platform}, System version: ${process.getSystemVersion()}`) - await logFloatingWindow(`Using compatibility mode: ${useCompatMode}`) + const useCompatMode = floatingWindowCompatMode || + process.env.FLOATING_COMPAT_MODE === 'true' || + safeMode const windowOptions: Electron.BrowserWindowConstructorOptions = { width: 120, @@ -40,16 +29,16 @@ async function createFloatingWindow(): Promise { x: floatingWindowState.x, y: floatingWindowState.y, show: false, - frame: safeMode ? true : false, + frame: safeMode, alwaysOnTop: !safeMode, resizable: safeMode, - transparent: !safeMode && !useCompatMode, // 兼容模式下禁用透明 + transparent: !safeMode && !useCompatMode, skipTaskbar: !safeMode, minimizable: safeMode, maximizable: safeMode, fullscreenable: false, closable: safeMode, - backgroundColor: safeMode ? '#ffffff' : (useCompatMode ? '#f0f0f0' : '#00000000'), // 兼容模式使用浅灰色 + backgroundColor: safeMode ? '#ffffff' : (useCompatMode ? '#f0f0f0' : '#00000000'), webPreferences: { preload: join(__dirname, '../preload/index.js'), spellcheck: false, @@ -59,91 +48,46 @@ async function createFloatingWindow(): Promise { } } - // windows 添加兼容性处理 if (process.platform === 'win32') { windowOptions.hasShadow = !safeMode windowOptions.webPreferences!.offscreen = false } - await logFloatingWindow(`Creating BrowserWindow with options: ${JSON.stringify(windowOptions, null, 2)}`) + floatingWindow = new BrowserWindow(windowOptions) + floatingWindowState.manage(floatingWindow) - try { - floatingWindow = new BrowserWindow(windowOptions) - await logFloatingWindow('BrowserWindow created successfully') - } catch (error) { - await logFloatingWindow('Failed to create BrowserWindow', error) - throw error - } - - try { - await logFloatingWindow('Attaching window state management...') - floatingWindowState.manage(floatingWindow) - await logFloatingWindow('Window state management attached') - } catch (error) { - await logFloatingWindow('Failed to attach window state management', error) - throw error - } - - await logFloatingWindow('Setting up event listeners...') - - try { - await logFloatingWindow('Adding render-process-gone listener...') - floatingWindow.webContents.on('render-process-gone', async (_, details) => { - await logFloatingWindow('Render process gone', details.reason) - floatingWindow = null - }) - await logFloatingWindow('Render-process-gone listener added') - } catch (error) { - await logFloatingWindow('Failed to add render-process-gone listener', error) - throw error - } - - await logFloatingWindow('Adding ready-to-show listener...') - floatingWindow.on('ready-to-show', async () => { - try { - await logFloatingWindow('Window ready to show, applying theme...') - applyTheme(customTheme) - await logFloatingWindow('Theme applied, showing window...') - floatingWindow?.show() - await logFloatingWindow('Window shown, setting always on top...') - floatingWindow?.setAlwaysOnTop(true, 'screen-saver') - await logFloatingWindow('Floating window setup completed successfully') - } catch (error) { - await logFloatingWindow('Error in ready-to-show', error) - } + // 事件监听器 + floatingWindow.webContents.on('render-process-gone', (_, details) => { + logError('Render process gone', details.reason) + floatingWindow = null + }) + + floatingWindow.on('ready-to-show', () => { + applyTheme(customTheme) + floatingWindow?.show() + floatingWindow?.setAlwaysOnTop(true, 'screen-saver') }) - await logFloatingWindow('Ready-to-show listener added') - await logFloatingWindow('Adding moved listener...') floatingWindow.on('moved', () => { - if (floatingWindow) floatingWindowState.saveState(floatingWindow) + floatingWindow && floatingWindowState.saveState(floatingWindow) }) - await logFloatingWindow('Moved listener added') - await logFloatingWindow('Adding IPC listener...') + + // IPC 监听器 ipcMain.on('updateFloatingWindow', () => { if (floatingWindow) { - floatingWindow?.webContents.send('controledMihomoConfigUpdated') - floatingWindow?.webContents.send('appConfigUpdated') + floatingWindow.webContents.send('controledMihomoConfigUpdated') + floatingWindow.webContents.send('appConfigUpdated') } }) - await logFloatingWindow('IPC listener added') - await logFloatingWindow('Loading page...') - if (is.dev && process.env['ELECTRON_RENDERER_URL']) { - const devUrl = `${process.env['ELECTRON_RENDERER_URL']}/floating.html` - await logFloatingWindow(`Loading dev URL: ${devUrl}`) - await floatingWindow.loadURL(devUrl) - } else { - const filePath = join(__dirname, '../renderer/floating.html') - await logFloatingWindow(`Loading file: ${filePath}`) - await floatingWindow.loadFile(filePath) - } - await logFloatingWindow('Page loaded successfully') + // 加载页面 + const url = is.dev && process.env['ELECTRON_RENDERER_URL'] + ? `${process.env['ELECTRON_RENDERER_URL']}/floating.html` + : join(__dirname, '../renderer/floating.html') + + is.dev ? await floatingWindow.loadURL(url) : await floatingWindow.loadFile(url) } catch (error) { - await logFloatingWindow('Failed to create floating window', error) - if (error instanceof Error) { - await logFloatingWindow(`Error stack: ${error.stack}`) - } + logError('Failed to create floating window', error) floatingWindow = null throw error } @@ -152,26 +96,20 @@ async function createFloatingWindow(): Promise { export async function showFloatingWindow(): Promise { try { if (floatingWindow && !floatingWindow.isDestroyed()) { - await logFloatingWindow('Showing existing floating window') floatingWindow.show() } else { - await logFloatingWindow('Creating new floating window') await createFloatingWindow() } } catch (error) { - await logFloatingWindow('Failed to show floating window', error) + logError('Failed to show floating window', error) - // 如果已经是兼容模式还是崩溃,说明问题很严重,自动禁用悬浮窗 + // 如果已经是兼容模式还是崩溃,自动禁用悬浮窗 const { floatingWindowCompatMode = true } = await getAppConfig() if (floatingWindowCompatMode) { - await logFloatingWindow('Compatibility mode was already enabled, disabling floating window completely') await patchAppConfig({ showFloatingWindow: false }) } else { - await logFloatingWindow('Enabling compatibility mode and retrying') await patchAppConfig({ floatingWindowCompatMode: true }) } - - await logFloatingWindow('Disabled floating window in config due to error') throw error } }