fix: v0.5.2 稳健性收尾与偏好记忆 - diff worker 崩溃 onerror 兜底(终止实例回退主线程同步计算、effect 已取消/jobId 已推进的迟到错误不回填)、主进程 will-navigate 导航白名单加固、nativeTheme 暗色标题栏、比较选项与仅看差异开关 localStorage 持久化(损坏数据防御性回退默认)、字符级降级报告选项构造与引擎降级分支对齐

This commit is contained in:
2026-08-18 11:39:26 +08:00
parent bac885a4a0
commit 77dff98425
9 changed files with 215 additions and 17 deletions
+10 -1
View File
@@ -1,5 +1,5 @@
import { join } from 'path'
import { app, shell, BrowserWindow, Menu, ipcMain, dialog, clipboard } from 'electron'
import { app, shell, BrowserWindow, Menu, ipcMain, dialog, clipboard, nativeTheme } from 'electron'
import { electronApp, optimizer, is } from '@electron-toolkit/utils'
import iconv from 'iconv-lite'
import fs from 'fs'
@@ -33,6 +33,12 @@ function createWindow(): void {
return { action: 'deny' }
})
// 窗口内导航白名单:仅放行回到当前应用地址(dev 首页 / 打包产物首页,等价于刷新),
// 阻断其余一切页面内跳转(新窗口已在上方拦截,此处补齐页面内导航防线)
mainWindow.webContents.on('will-navigate', (e, url) => {
if (url !== mainWindow.webContents.getURL()) e.preventDefault()
})
// 开发模式加载 dev server,生产加载打包后的 html
if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
@@ -154,6 +160,9 @@ ipcMain.handle('clipboard:write', (_event, text: string) => {
app.whenReady().then(() => {
electronApp.setAppUserModelId('com.metonateam.difflens')
// 强制暗色系统主题:Windows 标题栏/滚动条等系统控件跟随应用暗色科幻风格
nativeTheme.themeSource = 'dark'
app.on('browser-window-created', (_, window) => {
optimizer.watchWindowShortcuts(window)
})