v0.3.10: 全面优化增强 — 17项Bug修复/稳定性/功能改进
P0 致命Bug修复: - A1: openFolderDialog 类型/运行时崩溃(文件夹打开功能完全失效) - A2: SourceEditor 受控textarea手动改DOM反模式 - A3: tabStore.updateTabContent 内容相同时误标isModified 死代码清理: - B1: 删除menu:*/save/as/viewMode 三个永不触发的IPC通道 健壮性修复: - E1: rehypeFixImages 路径规范化+防越界加固 - E2: getFileName 尾斜杠返回正确文件名 - E3: EditorToolbar 行内代码按钮改用toggleInlineCodeCommand - E4: ErrorBoundary 内联样式抽为CSS类 功能增强: - D1: 标签页拖拽排序(tabStore.moveTab + TabBar DnD + CSS) - D2: Milkdown自动配对括号/引号(ProseMirror插件) - D3: 状态栏自动保存开关可点击 - D4: 文档大纲活跃标题高亮(useActiveHeading hook) - D5: 关闭窗口前flush防抖数据(flushSaveToDB) - D6: 搜索替换支持正则表达式 类型/架构: - C2: preload类型集中定义(ElectronAPI契约) - __pycache__ typo修复 文档/版本: - README/DESIGN同步为Milkdown + v0.3.10 - 项目结构树/技术栈/快捷键表更新 验证: typecheck(仅7预存), lint✅, test 96/96, vite build✅
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
<img src="https://img.shields.io/badge/TypeScript-5.6-3178C6?style=flat-square&logo=typescript" alt="TypeScript">
|
||||
<img src="https://img.shields.io/badge/React-18-61DAFB?style=flat-square&logo=react" alt="React">
|
||||
<img src="https://img.shields.io/badge/License-MIT-green?style=flat-square" alt="License">
|
||||
<img src="https://img.shields.io/badge/Version-v0.3.6-orange?style=flat-square" alt="Version">
|
||||
<img src="https://img.shields.io/badge/Version-v0.3.10-orange?style=flat-square" alt="Version">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -30,7 +30,7 @@
|
||||
|------|------|
|
||||
| 📑 **多标签页** | 同时打开多个文件,Ctrl+T 新建、Ctrl+W 关闭、Ctrl+Tab MRU 切换 |
|
||||
| 📂 **文件打开** | 按钮打开 / 拖拽打开 / 文件关联(双击 .md) / 命令行参数 |
|
||||
| ✏️ **实时编辑** | 左侧编辑器(CodeMirror 6),支持 Tab 缩进、行号显示、折叠、括号匹配 |
|
||||
| ✏️ **双编辑模式** | Milkdown WYSIWYG 编辑器(格式化工具栏/搜索替换/正则/自动配对)+ 源码模式(textarea)|
|
||||
| 👁 **实时预览** | 右侧预览面板,基于 unified/rehype 管线渲染,编辑即更新 |
|
||||
| 🔤 **代码高亮** | 基于 rehype-highlight,支持 180+ 种编程语言语法高亮 |
|
||||
| 🎨 **两种视图** | 编辑模式 / 预览模式,自由切换 |
|
||||
@@ -131,6 +131,7 @@ npm run test:coverage
|
||||
| `Ctrl + Shift + S` | 另存为 |
|
||||
| `Ctrl + 1` | 编辑模式 |
|
||||
| `Ctrl + 2` | 预览模式 |
|
||||
| `Ctrl + 3` | 源码模式 |
|
||||
| `Ctrl + F` | 搜索 |
|
||||
| `Ctrl + H` | 搜索并替换 |
|
||||
| `Ctrl + B` | 粗体 |
|
||||
@@ -145,7 +146,7 @@ npm run test:coverage
|
||||
| 桌面框架 | [Electron](https://www.electronjs.org/) v28 | 跨平台桌面应用框架 |
|
||||
| 前端框架 | [React](https://react.dev/) v18 | 函数组件 + Hooks |
|
||||
| 类型系统 | [TypeScript](https://www.typescriptlang.org/) v5.6 | 全量类型安全 |
|
||||
| 编辑器 | [CodeMirror](https://codemirror.net/) v6 | 现代化代码编辑器 |
|
||||
| 编辑器 | [Milkdown](https://milkdown.dev/) v7 | WYSIWYG 编辑器 + 源码模式 |
|
||||
| 状态管理 | [Zustand](https://zustand-demo.pmnd.rs/) v5 | 轻量级状态管理 |
|
||||
| 持久化 | [Dexie.js](https://dexie.org/) v4 (IndexedDB) | 标签页状态 & 用户设置持久化 |
|
||||
| Markdown 解析 | [unified](https://unifiedjs.com/) / [remark](https://remark.js.org/) / [rehype](https://rehype.js.org/) | 插件化 Markdown 渲染管线 |
|
||||
@@ -182,17 +183,25 @@ MarkLite/
|
||||
│ │ ├── main.tsx # React 入口
|
||||
│ │ ├── App.tsx # 根组件:布局编排、全局事件
|
||||
│ │ │
|
||||
│ │ ├── components/ # UI 组件
|
||||
│ │ ├── components/ # UI 组件 (23个)
|
||||
│ │ │ ├── Toolbar/ # 工具栏
|
||||
│ │ │ ├── TabBar/ # 标签页栏
|
||||
│ │ │ ├── Editor/ # CodeMirror 6 编辑器
|
||||
│ │ │ ├── TabBar/ # 标签页栏 (含拖拽排序)
|
||||
│ │ │ ├── Editor/ # Milkdown 编辑器 + 工具栏
|
||||
│ │ │ ├── Preview/ # Markdown 预览面板
|
||||
│ │ │ ├── SourceEditor/ # 源码编辑模式 (textarea)
|
||||
│ │ │ ├── Sidebar/ # 侧边栏文件树
|
||||
│ │ │ ├── StatusBar/ # 状态栏
|
||||
│ │ │ ├── FileTree/ # 递归文件树
|
||||
│ │ │ ├── OutlinePanel/ # 文档大纲 (活跃标题高亮)
|
||||
│ │ │ ├── StatusBar/ # 状态栏 (自动保存开关)
|
||||
│ │ │ ├── SearchReplace/ # 搜索替换面板 (支持正则)
|
||||
│ │ │ ├── WelcomeScreen/ # 欢迎屏幕
|
||||
│ │ │ ├── Toast/ # Toast 通知
|
||||
│ │ │ ├── ConfirmDialog/ # 确认对话框
|
||||
│ │ │ ├── ModifiedBanner/ # 文件外部修改提示
|
||||
│ │ │ ├── DropOverlay/ # 拖拽文件覆盖层
|
||||
│ │ │ ├── ErrorBoundary/ # 错误边界
|
||||
│ │ │ ├── AboutDialog/ # 关于对话框
|
||||
│ │ │ ├── LoadingSpinner/ # 加载指示器
|
||||
│ │ │ └── Icons.tsx # SVG 图标库
|
||||
│ │ │
|
||||
│ │ ├── stores/ # Zustand 状态管理
|
||||
@@ -200,17 +209,23 @@ MarkLite/
|
||||
│ │ │ ├── editorStore.ts # 编辑器状态
|
||||
│ │ │ └── sidebarStore.ts # 侧边栏状态
|
||||
│ │ │
|
||||
│ │ ├── hooks/ # 自定义 Hooks
|
||||
│ │ ├── hooks/ # 自定义 Hooks (19个)
|
||||
│ │ │ ├── useTheme.ts # 暗色/亮色主题
|
||||
│ │ │ ├── useSettings.ts # 用户设置
|
||||
│ │ │ ├── useSettings.ts # 视图模式
|
||||
│ │ │ ├── useSettingsInit.ts # 设置初始加载
|
||||
│ │ │ ├── useKeyboard.ts # 全局快捷键
|
||||
│ │ │ ├── useDragDrop.ts # 拖拽打开
|
||||
│ │ │ ├── useFileWatch.ts # 外部修改监听
|
||||
│ │ │ └── useUnsavedWarning.ts # 未保存提醒
|
||||
│ │ │ ├── useUnsavedWarning.ts # 未保存提醒
|
||||
│ │ │ ├── useAutoSave.ts # 自动保存
|
||||
│ │ │ ├── useAutoExpandDir.ts # 自动展开目录
|
||||
│ │ │ ├── useActiveHeading.ts # 活跃标题追踪
|
||||
│ │ │ └── ... # 文件操作、IPC监听等
|
||||
│ │ │
|
||||
│ │ ├── lib/ # 工具库
|
||||
│ │ │ ├── markdown.ts # Markdown 渲染管线
|
||||
│ │ │ ├── fileUtils.ts # 文件工具函数
|
||||
│ │ │ ├── errorHandler.ts # 错误处理
|
||||
│ │ │ └── constants.ts # 常量定义
|
||||
│ │ │
|
||||
│ │ ├── db/ # IndexedDB 持久化层
|
||||
|
||||
Reference in New Issue
Block a user