From 2716a7d32059616c2debfb200ec00acece8da928 Mon Sep 17 00:00:00 2001 From: thzxx Date: Thu, 21 May 2026 13:44:32 +0800 Subject: [PATCH] =?UTF-8?q?release:=20v1.3.0=20=E7=89=88=E6=9C=AC=E5=8F=91?= =?UTF-8?q?=E5=B8=83=EF=BC=8C=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3=E4=B8=8E?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DESIGN.md | 7 ++++- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 3 files changed, 80 insertions(+), 13 deletions(-) diff --git a/DESIGN.md b/DESIGN.md index 9db2217..3fd7e57 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -192,7 +192,12 @@ MarkLite/ ├── renderer/ │ ├── index.html # 主页面结构(含侧边栏、搜索栏) │ ├── style.css # UI 样式(亮色/暗色主题、侧边栏、搜索栏) -│ └── renderer.js # 渲染进程逻辑(标签页、编辑、预览、搜索、文件树) +│ ├── core.js # 核心模块:DOM 引用、全局状态、工具函数、初始化 +│ ├── tabs.js # 标签页模块:创建/切换/关闭、MRU、标签栏渲染 +│ ├── editor.js # 编辑器模块:行号、光标、文件大小、滚动同步 +│ ├── search.js # 搜索模块:搜索替换、高亮、正则、大小写 +│ ├── sidebar.js # 侧边栏模块:文件树、独立文件、拖拽调宽 +│ └── markdown.js # Markdown 模块:marked.js 初始化、XSS 清理、渲染 ├── lib/ │ ├── marked.min.js # Markdown 解析库(离线) │ ├── highlight.min.js # 代码高亮库(离线) diff --git a/README.md b/README.md index 3d92777..259ebc0 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Platform Electron License - Version + Version

@@ -26,18 +26,19 @@ | 功能 | 说明 | |------|------| -| 📑 **多标签页** | 同时打开多个文件,Ctrl+T 新建、Ctrl+W 关闭、Ctrl+Tab 切换 | -| 📂 **文件打开** | 按钮打开 / 拖拽打开 / 文件关联(双击 .md) | -| ✏️ **实时编辑** | 左侧编辑器,支持 Tab 缩进、行号显示、光标位置 | -| 👁 **实时预览** | 右侧预览面板,编辑即渲染,滚动同步 | +| 📑 **多标签页** | 同时打开多个文件,Ctrl+T 新建、Ctrl+W 关闭、Ctrl+Tab MRU 切换 | +| 📂 **文件打开** | 按钮打开 / 拖拽打开 / 文件关联(双击 .md),不支持的文件类型 Toast 提示 | +| ✏️ **实时编辑** | 左侧编辑器,支持 Tab 缩进、行号显示、光标位置、行号跟随滚动 | +| 👁 **实时预览** | 右侧预览面板,编辑即渲染,块级元素映射滚动同步,相对路径图片自动解析 | | 🔤 **代码高亮** | 基于 highlight.js,支持 180+ 种编程语言语法高亮 | | 🎨 **三种视图** | 分屏模式 / 纯编辑 / 纯预览,自由切换 | | 📐 **分屏调节** | 拖拽中间分隔条,自由调整编辑区与预览区比例 | | 🌙 **暗色主题** | 一键切换亮色/暗色主题,偏好自动记忆 | | 🔔 **文件监听** | 外部修改文件时自动提示,支持重新加载 | | 💾 **文件保存** | 保存 / 另存为,支持 .md 和 .txt 格式 | -| 🔍 **搜索替换** | Ctrl+F 搜索、Ctrl+H 替换,支持高亮匹配、大小写、正则表达式 | -| 📁 **文件树** | 侧边栏浏览项目目录,点击打开文件,自动刷新 | +| 🔍 **搜索替换** | Ctrl+F 搜索、Ctrl+H 替换,高亮匹配、大小写、正则表达式,字符宽度精确测量 | +| 📁 **文件树** | 侧边栏浏览项目目录,点击打开文件,自动刷新,支持拖拽调宽 | +| 📂 **独立文件** | 打开文件夹外的文件时,侧边栏「已打开的文件」区域独立显示 | | ⌨️ **快捷键** | 完整的键盘快捷键支持,操作高效 | | 📦 **NSIS 安装包** | 一键打包为 Windows exe 安装程序 | @@ -144,7 +145,12 @@ MarkLite/ ├── renderer/ │ ├── index.html # 主页面结构 │ ├── style.css # UI 样式(亮色/暗色主题) -│ └── renderer.js # 渲染进程逻辑(标签页、编辑、预览) +│ ├── core.js # 核心模块:DOM 引用、全局状态、工具函数、初始化 +│ ├── tabs.js # 标签页模块:创建/切换/关闭、MRU、标签栏渲染 +│ ├── editor.js # 编辑器模块:行号、光标、文件大小、滚动同步 +│ ├── search.js # 搜索模块:搜索替换、高亮、正则、大小写 +│ ├── sidebar.js # 侧边栏模块:文件树、独立文件、拖拽调宽 +│ └── markdown.js # Markdown 模块:marked.js 初始化、XSS 清理、渲染 ├── lib/ │ ├── marked.min.js # marked.js(本地离线) │ ├── highlight.min.js # highlight.js(本地离线) @@ -173,9 +179,18 @@ MarkLite/ │ ┌──────────────▼───────────────────────────┐ │ Renderer Process (renderer/) │ -│ 标签页 · 编辑器 · 预览 · 暗色主题 │ -│ 搜索替换 · 文件树侧边栏 · 拖拽 · 快捷键 │ -│ localStorage │ +│ │ +│ ┌─────────┐ ┌─────────┐ ┌───────────┐ │ +│ │ core.js │ │ tabs.js │ │ editor.js │ │ +│ │ 状态管理 │ │ 标签页 │ │ 编辑器 │ │ +│ └─────────┘ └─────────┘ └───────────┘ │ +│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ +│ │ search.js│ │sidebar.js│ │markdown.js│ │ +│ │ 搜索替换 │ │ 侧边栏 │ │ Markdown │ │ +│ └──────────┘ └──────────┘ └──────────┘ │ +│ │ +│ 模块通过 window.MarkLite 命名空间通信 │ +│ localStorage 持久化用户偏好 │ └──────────────────────────────────────────┘ ``` @@ -196,6 +211,53 @@ 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 98ec914..03089e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "marklite", - "version": "1.2.0", + "version": "1.3.0", "description": "Lightweight Markdown Reader for Windows", "main": "main.js", "scripts": {