diff --git a/DESIGN.md b/DESIGN.md
index 3fd7e57..9db2217 100644
--- a/DESIGN.md
+++ b/DESIGN.md
@@ -192,12 +192,7 @@ MarkLite/
├── renderer/
│ ├── index.html # 主页面结构(含侧边栏、搜索栏)
│ ├── style.css # UI 样式(亮色/暗色主题、侧边栏、搜索栏)
-│ ├── core.js # 核心模块:DOM 引用、全局状态、工具函数、初始化
-│ ├── tabs.js # 标签页模块:创建/切换/关闭、MRU、标签栏渲染
-│ ├── editor.js # 编辑器模块:行号、光标、文件大小、滚动同步
-│ ├── search.js # 搜索模块:搜索替换、高亮、正则、大小写
-│ ├── sidebar.js # 侧边栏模块:文件树、独立文件、拖拽调宽
-│ └── markdown.js # Markdown 模块:marked.js 初始化、XSS 清理、渲染
+│ └── renderer.js # 渲染进程逻辑(标签页、编辑、预览、搜索、文件树)
├── lib/
│ ├── marked.min.js # Markdown 解析库(离线)
│ ├── highlight.min.js # 代码高亮库(离线)
diff --git a/README.md b/README.md
index 259ebc0..3d92777 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@
-
+
@@ -26,19 +26,18 @@ | 功能 | 说明 | |------|------| -| 📑 **多标签页** | 同时打开多个文件,Ctrl+T 新建、Ctrl+W 关闭、Ctrl+Tab MRU 切换 | -| 📂 **文件打开** | 按钮打开 / 拖拽打开 / 文件关联(双击 .md),不支持的文件类型 Toast 提示 | -| ✏️ **实时编辑** | 左侧编辑器,支持 Tab 缩进、行号显示、光标位置、行号跟随滚动 | -| 👁 **实时预览** | 右侧预览面板,编辑即渲染,块级元素映射滚动同步,相对路径图片自动解析 | +| 📑 **多标签页** | 同时打开多个文件,Ctrl+T 新建、Ctrl+W 关闭、Ctrl+Tab 切换 | +| 📂 **文件打开** | 按钮打开 / 拖拽打开 / 文件关联(双击 .md) | +| ✏️ **实时编辑** | 左侧编辑器,支持 Tab 缩进、行号显示、光标位置 | +| 👁 **实时预览** | 右侧预览面板,编辑即渲染,滚动同步 | | 🔤 **代码高亮** | 基于 highlight.js,支持 180+ 种编程语言语法高亮 | | 🎨 **三种视图** | 分屏模式 / 纯编辑 / 纯预览,自由切换 | | 📐 **分屏调节** | 拖拽中间分隔条,自由调整编辑区与预览区比例 | | 🌙 **暗色主题** | 一键切换亮色/暗色主题,偏好自动记忆 | | 🔔 **文件监听** | 外部修改文件时自动提示,支持重新加载 | | 💾 **文件保存** | 保存 / 另存为,支持 .md 和 .txt 格式 | -| 🔍 **搜索替换** | Ctrl+F 搜索、Ctrl+H 替换,高亮匹配、大小写、正则表达式,字符宽度精确测量 | -| 📁 **文件树** | 侧边栏浏览项目目录,点击打开文件,自动刷新,支持拖拽调宽 | -| 📂 **独立文件** | 打开文件夹外的文件时,侧边栏「已打开的文件」区域独立显示 | +| 🔍 **搜索替换** | Ctrl+F 搜索、Ctrl+H 替换,支持高亮匹配、大小写、正则表达式 | +| 📁 **文件树** | 侧边栏浏览项目目录,点击打开文件,自动刷新 | | ⌨️ **快捷键** | 完整的键盘快捷键支持,操作高效 | | 📦 **NSIS 安装包** | 一键打包为 Windows exe 安装程序 | @@ -145,12 +144,7 @@ MarkLite/ ├── renderer/ │ ├── index.html # 主页面结构 │ ├── style.css # UI 样式(亮色/暗色主题) -│ ├── core.js # 核心模块:DOM 引用、全局状态、工具函数、初始化 -│ ├── tabs.js # 标签页模块:创建/切换/关闭、MRU、标签栏渲染 -│ ├── editor.js # 编辑器模块:行号、光标、文件大小、滚动同步 -│ ├── search.js # 搜索模块:搜索替换、高亮、正则、大小写 -│ ├── sidebar.js # 侧边栏模块:文件树、独立文件、拖拽调宽 -│ └── markdown.js # Markdown 模块:marked.js 初始化、XSS 清理、渲染 +│ └── renderer.js # 渲染进程逻辑(标签页、编辑、预览) ├── lib/ │ ├── marked.min.js # marked.js(本地离线) │ ├── highlight.min.js # highlight.js(本地离线) @@ -179,18 +173,9 @@ MarkLite/ │ ┌──────────────▼───────────────────────────┐ │ Renderer Process (renderer/) │ -│ │ -│ ┌─────────┐ ┌─────────┐ ┌───────────┐ │ -│ │ core.js │ │ tabs.js │ │ editor.js │ │ -│ │ 状态管理 │ │ 标签页 │ │ 编辑器 │ │ -│ └─────────┘ └─────────┘ └───────────┘ │ -│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ -│ │ search.js│ │sidebar.js│ │markdown.js│ │ -│ │ 搜索替换 │ │ 侧边栏 │ │ Markdown │ │ -│ └──────────┘ └──────────┘ └──────────┘ │ -│ │ -│ 模块通过 window.MarkLite 命名空间通信 │ -│ localStorage 持久化用户偏好 │ +│ 标签页 · 编辑器 · 预览 · 暗色主题 │ +│ 搜索替换 · 文件树侧边栏 · 拖拽 · 快捷键 │ +│ localStorage │ └──────────────────────────────────────────┘ ``` @@ -211,53 +196,6 @@ MarkLite/ - ✅ HTML 内联元素 - ✅ GFM(GitHub Flavored Markdown) -## 📋 更新日志 - -### v1.3.0 (2026-05-21) - -**新功能** -- 侧边栏文件夹目录树标题头 -- 独立文件显示:打开文件夹外的文件时,侧边栏「已打开的文件」区域单独列出 -- Toast 通知组件:拖拽不支持的文件类型时弹出提示 -- MRU 标签切换:Ctrl+Shift+Tab 回到最近使用的标签 -- 侧边栏拖拽调宽:右边缘拖拽调整宽度(180-500px),自动持久化 -- 预览区本地图片支持:Markdown 中的相对路径图片自动转为 file:// URL - -**优化** -- 搜索高亮定位:用 canvas measureText 替代硬编码 8px,适配不同字体 -- 滚动同步精度:块级元素行号查找从 O(n) 优化为 O(1)(Set) -- 行号滚动同步:行号区域跟随编辑器滚动位置 -- 拖拽文件反馈:不支持的文件类型弹出 Toast 提示而非静默忽略 - -**Bug 修复** -- 侧边栏高亮跟随标签切换同步更新 -- 侧边栏始终可见(不因无文件而隐藏) -- 保存/另存为后侧边栏正确刷新 -- 关闭标签后侧边栏高亮自动清除 - -**重构** -- renderer.js(1664行)拆分为 6 个模块:core / tabs / editor / search / sidebar / markdown -- 删除重复的 formatFileSize 函数 - -### v1.2.0 - -- 搜索替换(Ctrl+F / Ctrl+H,高亮、正则、大小写) -- 文件树侧边栏(打开文件夹、目录树浏览、自动刷新) - -### v1.1.0 - -- 多标签页支持 -- 暗色主题 -- 文件监听与外部修改提示 -- 未保存提醒 -- 滚动同步 - -### v1.0.0 - -- 初始版本:Markdown 编辑与实时预览 - ---- - ## 📄 许可证 [MIT License](LICENSE) © 2026 [thzxx](https://gitee.com/thzxx) diff --git a/package.json b/package.json index 03089e5..98ec914 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "marklite", - "version": "1.3.0", + "version": "1.2.0", "description": "Lightweight Markdown Reader for Windows", "main": "main.js", "scripts": {