fix: v0.2.4 健壮性与体验打磨 - 读取容错、10MB 大文件防护、横向滚动同步、Esc/外点关闭、二进制预警

This commit is contained in:
2026-08-17 21:03:40 +08:00
parent e10ddea30b
commit 4ee5d62348
17 changed files with 380 additions and 39 deletions
+17 -3
View File
@@ -1,18 +1,32 @@
import { contextBridge, ipcRenderer } from 'electron'
/** 打开文件返回的数据结构 */
/** 打开文件成功返回的数据结构 */
export interface FileData {
path: string
name: string
text: string
encoding: string
/** 疑似二进制内容(解码启发式判定),渲染端据此提示乱码风险 */
binary: boolean
}
/** 打开文件失败的返回结构 */
export interface FileOpenError {
error: 'too-large' | 'read-failed'
/** 文件名(用于提示) */
name?: string
/** too-large 时的文件字节数 */
size?: number
}
/** 打开文件结果:成功数据 / 失败原因 / 用户取消(null) */
export type FileOpenResult = FileData | FileOpenError | null
/** 主进程暴露给渲染进程的安全 API */
const api = {
openFile: (side?: 'left' | 'right'): Promise<FileData | null> =>
openFile: (side?: 'left' | 'right'): Promise<FileOpenResult> =>
ipcRenderer.invoke('file:open', side ?? null),
decodeBuffer: (buffer: ArrayBuffer): Promise<{ text: string; encoding: string }> =>
decodeBuffer: (buffer: ArrayBuffer): Promise<{ text: string; encoding: string; binary: boolean }> =>
ipcRenderer.invoke('file:decode-buffer', buffer),
saveReport: (content: string, defaultName: string): Promise<{ ok: boolean; path: string | null }> =>
ipcRenderer.invoke('file:save-report', content, defaultName),