Repository navigation
Releases
rustmd v1.10.5 — local-first Markdown, HTML & data notes
rustmd 1.10.5
这是依赖维护版:功能和笔记格式与 1.10.4 相同,主要把运行时、PDF 与前端依赖更新到
当前版本,并修复了 GitHub 上合并的依赖升级 PR 带来的编译中断。建议 1.10.4 用户升级,
以获取依赖中的安全与健壮性修复。
依赖升级
libloading0.8.9 → 0.9.0(Linux 打印 FFI 运行时加载)lopdf0.36.0 → 0.47.0(PDF 页码压印;新增畸形 PDF 的解析/解压上限、
xref 边界校验与更多流过滤器)getrandom0.3.4 → 0.4.3(预览/渲染随机令牌)tauri-plugin-opener2.7.2 → 2.7.3marked18.1.3 → 18.2.0(Markdown 解析修复)vite8.3.6 → 8.3.8(构建链修复)
Linux 兼容性
- 本版 Linux deb/AppImage 改在 Ubuntu 26.04 上构建(与
LINUX_BUILD.md的
构建基线一致),运行基线为 Ubuntu 24.04+ / glibc 2.39,需要 GTK 3 与
WebKitGTK 4.1 运行库。 - 仍在使用 Ubuntu 22.04 的用户请保留 1.10.4,或按
LINUX_BUILD.md从源码构建。 - 普通 CI 仍保留 Ubuntu 22.04 的编译与 Xvfb E2E;发布 workflow 另外在
Ubuntu 26.04 上执行 deb/AppImage 打包 dry run。 - 新增非阻塞的 Wayland smoke(sway headless + grim):以
GDK_BACKEND=wayland启动 release 二进制并检查首帧非空白;失败只报告,
不阻塞发布。应用仍自动适配 Wayland 与 X11/XWayland,不需要手动设置后端。
修复与验证
- 适配
libloading0.9 的AsFilenameAPI,Linux 打印代码恢复编译。 - 适配
lopdf0.47 的get_page_content返回值,PDF 页码测试恢复编译。 - 页码压印测试新增“原有字体不得被替换”的断言;并用真实 9 页 WebView2 导出 PDF
验证:页数、正文与嵌入字体均保留,每页N / M页脚位置正确。 npm run check全绿:60 个前端单测、77 个 Rust 测试、fmt/clippy/ESLint、
仓库/版本检查与 Vite 生产构建。- 真实 WebView2 E2E(10 篇示例,含 HTML/CSV/TXT/JSON)通过;远程图片主机不可达
时按既有策略记为警告,不影响发布。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.10.5-win-x64-portable.zip |
| Linux | rustmd_1.10.5_amd64.deb / rustmd_1.10.5_amd64.AppImage |
| macOS | rustmd-1.10.5-macos-arm64.dmg |
Windows 为自签名(SmartScreen 仍提示未知发布者);macOS 为 ad-hoc 签名、未公证。
每个平台资产旁有 .sha256(Linux 另有 SHA256SUMS-linux.txt),Release 里还有
合并的 SHA256SUMS.txt。
rustmd v1.10.4 — local-first Markdown, HTML & data notes
rustmd 1.10.4
这一版是一次全量审计 + 回归后的稳定版:修掉了一个会丢数据的撤销 bug、几处
HTML/PDF 渲染问题,并收紧了 HTML 笔记的资源与路径边界。功能与文件格式不变,
建议所有 1.10.x 用户升级。
安全与数据安全
- HTML 笔记不能再读取库内任意文件:
read_local_image只接受图片扩展名。
以前恶意 HTML 笔记可以把库里的.env、密钥等文本变成<img>的 data URL
再读出来;CSS/JS 内联单独限制为.css/.js/.mjs。 - 超大文件保护:单篇笔记超过 64 MB 时只显示文件名和“内容过大”的摘要,
不会加载正文,避免下载来的笔记库卡死界面。 - 切换笔记后的撤销已隔离:打开新笔记会重建编辑器状态,Ctrl+Z 不会再恢复
上一篇笔记的文本并自动保存进当前文件。 - 关闭窗口前自动保存:窗口关闭会先 flush 500ms 防抖保存;保存失败会询问,
不再静默丢失最后几秒输入。
HTML / 预览 / 导出
- HTML 资源内联保留
<html lang>、<body class>等文档属性;defer头部脚本
内联后在<body>存在时才执行,报告类页面不再丢样式/图表。 - 快速切换笔记时,旧 Markdown 渲染不会再清掉新打开的 HTML 预览。
- 栅格 PDF 的每一页按自身宽高选择方向,最后一页不再是窄而高、右侧被裁掉的页面。
- PDF 一律使用浅色打印配色:深色主题在 macOS/Linux 上不会出现浅字白纸。
- PNG / 栅格 PDF 的缩放同时限制宽度、高度和总像素面积,超宽大表不再触发画布上限;
图片按真实尺寸排版,不再把 200px 小图放大到 860px。 - 独立 HTML 导出的代码块会带上 highlight.js 配色。
数据与界面
- CSV/TSV 分隔符嗅探修复:文本字段里的逗号、引号内的分号不再导致列错位。
- 英文界面的搜索命中不再显示中文的“标题/文件名/标签”前缀。
- 删除笔记时,500ms 自动保存不会把文件重新写回来;导出不会再并发叠加。
- 标签输入支持一次粘贴多个标签并保持焦点;搜索高亮不再破坏
&等实体。 - 数据视图切换后释放监听器与 ResizeObserver;长表头、长 TXT 行与深 JSON 不再被裁切;
尊重系统“减少动态效果”设置。 - 单篇笔记 64 MB 读取上限(正常 CSV/TXT/JSON 仍不限制行列显示)。
质量与发布
npm run check:ESLint、60 个前端单测、仓库/IPC/文档/版本检查、fmt、clippy
-D warnings、77 个 Rust 测试、Vite build。npm run selftest:真实 WebView 10 篇示例;报告校验器现在要求每个 PNG/PDF/HTML
产物真实存在且字节数一致、示例全覆盖,并断言残留公式/Mermaid/MathJax 错误、
空白 PNG、HTML 文档结构与脚本执行。- CI 在打 tag 前就执行 Windows 签名 + 绿色 zip、macOS app bundle + ad-hoc 签名的
打包 dry run;Release 缺少任一平台资产会直接失败。 - GitHub About/topics 统一为 HTML 优先口径(
html、html-editor、html-notes、
webview)。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.10.4-win-x64-portable.zip |
| Linux | rustmd_1.10.4_amd64.deb / rustmd_1.10.4_amd64.AppImage |
| macOS | rustmd-1.10.4-macos-arm64.dmg |
Windows 为自签名(SmartScreen 仍提示未知发布者);macOS 为 ad-hoc 签名、未公证。
每个平台资产旁有 .sha256(Linux 另有 SHA256SUMS-linux.txt),Release 里还有
合并的 SHA256SUMS.txt。
rustmd v1.10.3
rustmd 1.10.3
这一版优化 CSV / TXT / JSON 笔记的 HTML 导出:不再套用 Markdown 的
820px 阅读栏宽,改为充分利用浏览器屏幕宽度,同时保持 CSV/TXT 相同的表格逻辑。
变化
- 数据笔记独立导出文档使用
data-export全宽布局:左右边距缩小,正文不再限制
820px;1440 视口下 18 列 TXT 表格卡片约 1374px,1920 下约 1856px。 - 数据卡片仍按内容收缩:3 列窄表不会被强行拉满;宽表使用整个视口并在表格底部
保留横向滚动,不再继承预览的max-height内部纵向滚动。 - CSV 与 TXT 共用同一套
data-export类、列宽/对齐/表头/滚动规则;JSON 检查器
也使用全宽布局。 - Markdown 导出的 820px 阅读栏宽保持不变,避免正文行宽过长。
验证
npm run check:ESLint、51 个前端单测、仓库/版本检查、fmt、clippy
-D warnings、75 个 Rust 测试、Vite build 全部通过。npm run selftest:真实 WebView 10 篇示例全部通过。- 真实 GBK 股票 TXT 导出的 HTML 在 1440/1920 下验证:全宽卡片、横向滚动可访问
全部 18 列,CSV 使用同一布局逻辑。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.10.3-win-x64-portable.zip |
| Linux | rustmd_1.10.3_amd64.deb / rustmd_1.10.3_amd64.AppImage |
| macOS | rustmd-1.10.3-macos-arm64.dmg |
Windows 为自签名(SmartScreen 仍提示未知发布者)。macOS 为 ad-hoc 签名、未公证。
rustmd v1.10.2
rustmd 1.10.2
这是针对 1.10.1 宽数据表 PDF 导出的修复版。
修复
- TXT/CSV 宽表导出 PDF 错乱:1.10.1 会把数据表按普通 Markdown 表格的
width:100%规则压回 A4 宽度,随后 jsPDF 以 portrait 方向二次旋转,得到一张
竖长、列被挤压且右侧裁切的页面。1.10.2 让导出舞台保留数据表的自然宽度,并按
页面实际宽高选择 landscape/portrait;18 列 TXT 表现在导出为一张完整的横向页面。 - 数据表在导出舞台不再继承 Markdown 表格的强制 100% 宽度和逐字换行规则;列宽、
数字/日期/中文标签都保持与 PNG 一致的排版。 - TXT 列宽修复:整行说明和空行不再参与列宽推断;3 列 TXT 示例的「名称」列
不再被说明文字撑大,空行也不再显示成空表格行。README 截图同步更新。
兼容与验证
- 保留 1.10.1 可调布局、4K/200% 数据视图、无行/列/节点上限、GBK/GB18030、
HTML charset 等全部改动。 npm run check:ESLint、51 个前端单测、仓库/版本检查、fmt、clippy
-D warnings、75 个 Rust 测试、Vite build 全部通过。npm run selftest:真实 WebView 10 篇示例全部通过。- 真实 GBK 股票信号文件 24 行 × 18 列:PNG 8505×2847;PDF 为
2126.25×711 pt横向页面,完整显示全部列。 - 1440×900、1920×1080(4K/200%)交互与截图保持 1.10.1 的效果。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.10.2-win-x64-portable.zip |
| Linux | rustmd_1.10.2_amd64.deb / rustmd_1.10.2_amd64.AppImage |
| macOS | rustmd-1.10.2-macos-arm64.dmg |
Windows 为自签名(SmartScreen 仍提示未知发布者)。macOS 为 ad-hoc 签名、未公证:
首次启动会被 Gatekeeper 拦截,请在系统设置 → 隐私与安全性中选择“仍要打开”,
或执行 xattr -dr com.apple.quarantine /Applications/rustmd.app。
rustmd v1.10.1
rustmd 1.10.1
这一版集中解决宽表和大屏布局:CSV 与 TXT 共用同一套表格引擎,列宽按内容计算,
窄表不强制铺满,宽表可用满 4K/200% 视口;同时让左侧导航栏和编辑/预览分屏都可以
拖动调整,并在顶栏提供一键恢复默认宽度。
新增
- 可调布局:拖动左侧栏右缘调整导航宽度(220–680px,默认 320px,按视口
自适应);拖动编辑/预览分隔条调整分屏比例(20%–80%,默认 50/50)。支持键盘
方向键、双击/Enter 重置;两个宽度分别存rustmd-sidebar-width/rustmd-split。 - 一键恢复默认宽度:顶栏新增恢复按钮,同时恢复 320px + 50/50,并清除偏好。
- README 中英文补充 MD/HTML/CSV/TXT/JSON 全格式实际渲染截图,并重新生成主界面、
深色主题、侧栏、多库截图。
数据表格
- CSV/TXT 共用同一套表头检测、对齐、列宽、滚动和样式逻辑。
- 列宽按内容自适应:窄表收缩、宽表占满预览宽度;折行阈值放宽到 64 显示字符,
股票信号样本所有字段保持单行。 - TXT 首行含数值时不再被误判为表头;只有特征明确才生成
<thead>。 - 宽表提供顶部和底部同步横向滚动条;长表在卡片内滚动,表头固定。
- 数据视图不再限制行/列/节点数量,完整内容进入预览;超大文件的内存/渲染成本
由用户控制。 - 宽表 PNG/栅格 PDF 的离屏舞台扩宽到表格自然宽度,不再裁掉右侧列;窄数据表仍走
矢量 PDF,宽数据表自动回退栅格 PDF;超宽时按画布宽度降采样。 - 18 行以上的表格在预览区会把剩余高度均分给行高,减少卡片底部空白;CSV 短表
仍按内容高度显示。
兼容与验证
- 保留 1.10.0 的 CSV 分隔符/空引号、HTML charset、BOM、GB18030、数据导出等修复。
npm run check:ESLint、50 个前端单测、仓库/版本检查、fmt、clippy
-D warnings、75 个 Rust 测试、Vite build 全部通过。npm run selftest:真实 WebView 10 篇示例全部通过;真实 GBK 股票信号文件
24 行 × 18 列读取及 PNG/PDF 导出成功。- 1440×900、1920×1080(4K/200%)和 3840×2160 物理截图均已验证。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.10.1-win-x64-portable.zip |
| Linux | rustmd_1.10.1_amd64.deb / rustmd_1.10.1_amd64.AppImage |
| macOS | rustmd-1.10.1-macos-arm64.dmg |
Windows 为自签名(SmartScreen 仍提示未知发布者)。macOS 为 ad-hoc 签名、未公证:
首次启动会被 Gatekeeper 拦截,请在系统设置 → 隐私与安全性中选择“仍要打开”,
或执行 xattr -dr com.apple.quarantine /Applications/rustmd.app。
请使用对应平台的 .sha256 / SHA256SUMS-linux.txt 校验;合并的
SHA256SUMS.txt 需要先把全部 Release 资产下载到同一目录再执行
sha256sum -c SHA256SUMS.txt。
rustmd v1.10.0
rustmd 1.10.0
这一版把 rustmd 从“Markdown / HTML 笔记”扩展为五种格式的本地笔记与数据查看器:
新增 CSV 表格、TXT 制表符对齐、JSON 检查器,并为所有格式补齐格式徽标、新建菜单、
编码状态和 HTML/PNG/PDF 导出。表格列宽、对齐、隔行底色与按列文字色也做了系统性
优化。
新增
- CSV 表格:引号字段、字段内换行、双引号转义;逗号/制表符/分号/竖线分隔符
嗅探;首行表头;数字/日期/货币/布尔智能对齐;短列收紧、长文本列占余宽;
隔行底色 + 按列文字色 + 细分隔线 + 悬停高亮。 - TXT 制表符对齐:按制表符拆列并保留空格;无制表符行整行显示;自动跳过前置
说明行、按第一行多列文本识别表头;等宽字体与智能列宽。 - JSON 检查器:键值分列、对象/数组分组浅底与侧边轨、类型/数量标签、类型圆点、
可折叠分组;字符串/数字/布尔/null 独立语义色;非法 JSON 显示错误和完整原文;
浅色/深色两套配色。 - 自适应编码:BOM → UTF-8 → GBK → GB18030;状态栏显示当前编码;保存沿用
原编码和 BOM;GBK 文件新增四字节字符(emoji)时兼容升级为 GB18030;重复 UTF-8
BOM 归一化,不会累积。NoteMeta也返回编码,保存后状态栏同步。 - 全格式导出:CSV/TXT/JSON 与 Markdown 共用 HTML/PNG/PDF 导出;数据 HTML
保留表格/检查器样式与截断提示;HTML 笔记导出统一为 UTF-8 独立文件并规范化遗留
<meta charset="gbk">。 - 4 个数据示例夹具,以及 HTML/CSV/TXT/JSON 中英文、深色截图。
变更
- 格式徽标、新建菜单、编辑器语法、列表标题和状态栏覆盖全部五种格式。
- 表格视觉从列底色改为“隔行底色 + 按列文字色”,并加入智能宽度提示;JSON 调色板
与分组层次同步优化。 - 自测扩展到 10 篇示例(含 GBK CSV),报告检查新增
--require-data、数据表头
对齐、HTML 文本不注入 DOM、数据 HTML 导出与 charset 断言;CI 自测上限 1200 秒。 - README 中英文、AGENTS、架构/测试/安全/发布/审计文档、GitHub 推广文案同步更新。
修复
- CSV 大行数渲染时的调用栈崩溃;分隔符被文本内逗号误导。
- TXT 前置说明行导致表头参与类型判断、数字列左对齐。
- 打印/导出时数据视图被
overflow裁剪;非法 JSON 原文只导出 520px。 - Windows 保留名/前导点重命名;Unix 反斜杠文件名被误当路径分隔符。
- HTML 旧编码导出乱码;重复 BOM 保存累积;GB18030 四字节文件标错编码。
- 数据笔记保存冲突、重命名扩展名、GBK 升级等回归测试补齐。
数据与兼容
- 现有 Markdown / HTML 笔记、front matter、标签、最近笔记库和多库配置不受影响。
- 新增
.csv/.txt/.json笔记;不写 front matter,不产生标签。 - 数据视图为资源上限:CSV 2000 行/100 列、TXT 5000 行/80 列、JSON 6000 节点;
预览与导出都显示截断提示。 - 编码歧义保留说明:约 1920 个常用汉字的 GBK 字节也是合法 UTF-8,此时按 UTF-8
读取;遇到乱码请先在外部转换。 - Windows 绿色 zip、Linux deb/AppImage、macOS Apple Silicon DMG 的构建方式不变。
验证
npm run check:ESLint、45 个前端单测、仓库/版本检查、cargo fmt、
clippy-D warnings、75 个 Rust 测试(Windows 74:73 通过 + 1 ignored;
Linux/macOS 75:74 通过 + 1 ignored,额外 1 个 Unix 路径测试)、Vite build。npm run selftest:真实 WebView 渲染 10 篇示例,逐篇导出 HTML/PNG/PDF,
report.ok: true;check-selftest-report --require-html --require-data通过。- 浏览器 mock 复核格式徽标、新建菜单、编码状态、表格对齐/列宽/配色、JSON 浅色
深色、HTML 导出 charset 和数据导出。 - 额外用 300 行长 CSV 验证矢量 PDF 分页(13 页)与智能列宽(临时夹具不进入仓库)。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.10.0-win-x64-portable.zip |
| Linux | rustmd_1.10.0_amd64.deb / rustmd_1.10.0_amd64.AppImage |
| macOS | rustmd-1.10.0-macos-arm64.dmg |
Windows 为自签名(SmartScreen 仍提示未知发布者)。macOS 为 ad-hoc 签名、未公证:
首次启动会被 Gatekeeper 拦截,请在系统设置 → 隐私与安全性中选择“仍要打开”,
或执行 xattr -dr com.apple.quarantine /Applications/rustmd.app。
请优先使用对应平台的 .sha256 / SHA256SUMS-linux.txt 校验;合并的
SHA256SUMS.txt 需要先把全部 Release 资产下载到同一目录再执行
sha256sum -c SHA256SUMS.txt。
rustmd v1.9.0
rustmd 1.9.0
这一版把“笔记库管理”和侧栏空间利用率一起升级:最近笔记库支持钉死/置顶(最多
20 个),可以同时打开多个置顶库并汇总浏览;侧栏的分区比例可调,默认把更大的
面积留给下方笔记列表。
新增
- 最近笔记库 20 条 + 钉死/置顶:切换窗口按最近使用顺序最多列出 20 个目录。
每个目录右侧的图钉可把笔记库钉死/置顶;置顶库固定显示在“置顶”分组最上方,
不参与容量淘汰。当前目录标记、置顶状态和顺序都会持久化。 - 多库同开:搜索框下方新增“多库”按钮。开启后同时加载所有置顶库和当前库:
笔记列表汇总展示,每条笔记带所属库徽标;文件夹树按库分组,各库的子目录独立
选择。打开、保存、重命名、移动、删除和导出都会使用笔记所属的库目录。 - 库根与子目录折叠:多库视图中的库根节点和各级子目录都可以折叠/展开;
库根折叠状态存rustmd-collapsed-vaults,子目录展开状态沿用
rustmd-expanded-folders。 - 可调侧栏比例:侧栏默认 320px,文件夹/标签区按内容自适应,笔记列表占满
剩余高度;两者之间新增可拖动分隔条。拖动可随时调整,双击/Enter 恢复默认,
高度存rustmd-nav-height;分隔条也支持键盘方向键 / Home / End 调整。
变更
- 侧栏顶栏、搜索区、标签区与笔记条目的间距整体收紧,默认可见笔记数明显增加。
- 浏览器 mock 支持按目录隔离的示例库(
D:\Notes、D:\Knowledge、
D:\Writing),便于在浏览器模式验证置顶与多库聚合。 - README 中英文、AGENTS、架构/测试/安全/发布/审计文档同步更新;README 截图
按 320px 侧栏重新生成,并新增多库同开截图。 - Windows 绿色 zip、Linux deb/AppImage、macOS Apple Silicon DMG 的构建与签名
方式不变。
数据与兼容
rustmd-recent-dirs从纯字符串数组自动升级为{ dir, pinned }对象数组;
旧数据无需手动迁移,首次读取时自动兼容。- 新增
rustmd-multi-vault、rustmd-collapsed-vaults、rustmd-nav-height
三个本地偏好键;笔记文件、front matter、HTML 笔记和导出格式不变。 - 新增
set_notes_rootsIPC,用于把多个已打开库根注册给rmd本地图片协议和
read_local_image。每个文件仍逐个根目录做 canonicalize + 前缀检查,不放松
路径封闭;主窗口校验、CSP、HTML 隔离和导出边界不变。
验证
npm run check:ESLint、34 个前端单测、仓库/版本检查、cargo fmt、
clippy-D warnings、64 个 Rust 测试(63 通过 + 1 个网络测试 ignored)、
Vite build 全部通过。npm run selftest:真实 WebView 渲染 6 篇示例(含 HTML),report.ok: true、
0 errors;picsum 远程图不可达记为 1 条 warning(既有容错策略),
--require-html报告校验通过。- 浏览器 mock:置顶/取消置顶、20 条上限与置顶不淘汰、多库聚合列表、按库分组的
文件夹树、跨库打开/编辑/保存、库根与子目录折叠、侧栏分隔条拖动/双击重置。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.9.0-win-x64-portable.zip |
| Linux | rustmd_1.9.0_amd64.deb / rustmd_1.9.0_amd64.AppImage |
| macOS | rustmd-1.9.0-macos-arm64.dmg |
Windows 为自签名(SmartScreen 仍提示未知发布者)。macOS 为 ad-hoc 签名、未公证:
首次启动会被 Gatekeeper 拦截,请在系统设置 → 隐私与安全性中选择“仍要打开”,
或执行 xattr -dr com.apple.quarantine /Applications/rustmd.app。
请优先使用对应平台的 .sha256 / SHA256SUMS-linux.txt 校验;合并的
SHA256SUMS.txt 需要先把全部 Release 资产下载到同一目录再执行
sha256sum -c SHA256SUMS.txt。
rustmd v1.8.1
rustmd 1.8.1
这一版是发布目标补丁:macOS 只面向 Apple Silicon(arm64),不再构建
universal DMG,也不支持 Intel Mac。应用功能与 1.8.0 相同。
变更
- macOS 仅 Apple Silicon:CI 与 release workflow 改为
aarch64-apple-darwin,移除 x86_64 / universal 构建。 - 资产改名:macOS 下载文件为
rustmd-1.8.1-macos-arm64.dmg。 - 文档同步:README、AGENTS、RELEASING、TESTING 和审计报告明确标注
Apple Silicon 要求;Windows / Linux 资产与使用方式不变。 - 应用代码与 1.8.0 相同,当前文件夹范围、范围搜索、文件夹计数与标签云行为不变。
验证
npm run check全部通过:28 个前端单测、59 个 Rust 测试(58 通过 +
1 个网络测试 ignored)、ESLint、仓库/版本检查和 Vite build。- GitHub release workflow 在 macOS runner 上安装
aarch64-apple-darwin
并构建、ad-hoc 签名 arm64.app;1.8.0 的真实 WebView selftest
(6 篇示例、0 errors、1 条 picsum warning)仍适用于本版应用代码。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.8.1-win-x64-portable.zip |
| Linux | rustmd_1.8.1_amd64.deb / rustmd_1.8.1_amd64.AppImage |
| macOS | rustmd-1.8.1-macos-arm64.dmg(Apple Silicon only) |
Windows 为自签名(SmartScreen 仍提示未知发布者)。macOS 为 ad-hoc 签名、未公证,
且仅支持 Apple Silicon(M 系列);首次启动会被 Gatekeeper 拦截,请在系统设置 →
隐私与安全性中选择“仍要打开”,或执行
xattr -dr com.apple.quarantine /Applications/rustmd.app。
请优先使用对应平台的 .sha256 / SHA256SUMS-linux.txt 校验;合并的
SHA256SUMS.txt 需要先把全部 Release 资产下载到同一目录再执行
sha256sum -c SHA256SUMS.txt。
rustmd v1.8.0
rustmd 1.8.0
这一版把“默认只看当前文件夹”做成明确、可持久化的范围开关:打开笔记库或切换
文件夹时,列表和搜索先停留在当前目录,不再自动钻进所有子文件夹;需要时再一键
展开到整个子树。
新增
- 当前文件夹范围:笔记列表、全文搜索、文件夹计数和标签云默认只覆盖当前
文件夹的直属笔记。刚打开或刚切换笔记库时,当前文件夹就是库根目录。 - “包含子文件夹”开关:位于搜索框下方。打开后,列表与搜索递归覆盖当前
目录的整个子树;文件夹计数同步从“直属笔记数”切换为“子树笔记数”。 - 范围搜索:
search_notes在后端直接按当前目录扫描,不递归时只读取该目录
顶层文件,不会先全库扫描再由前端过滤;搜索范围与列表范围始终一致。 - 标签云随范围变化:只统计当前范围内的标签;切换目录/范围后,如果活动标签
已不在范围内会自动清除,不会留下看不见的空过滤。 - 空状态提示:当前目录没有直属笔记、但子文件夹里有笔记时,列表会提示打开
“包含子文件夹”,避免误以为笔记库是空的。 - 设置持久化:开关状态保存在
localStorage.rustmd-include-subfolders,
重启应用后保持;切换笔记库时当前目录回到库根目录,但开关偏好保留。
变更
- 版本号提升到 1.8.0。
- 范围逻辑抽到
notelist.js的folderInScope/countTags纯函数,前端单测、
浏览器 mock 与 Rust 搜索实现保持同一套语义。 - README 中英文版、AGENTS、架构/测试/安全/发布/审计文档同步更新;README 截图
重新生成,侧栏可见新的“包含子文件夹”开关。 - Windows 绿色 zip、Linux deb/AppImage、macOS universal DMG 的构建与签名方式不变。
验证
npm run check:ESLint、28 个前端单测、仓库/版本检查、cargo fmt、
clippy-D warnings、59 个 Rust 测试(58 通过 + 1 个网络测试 ignored)、
Vite build 全部通过。- 浏览器 mock:默认范围只显示根目录 2 篇;根目录搜索不返回子目录命中;打开开关
后 7 篇全部出现、子目录搜索命中;关闭后work只显示 3 篇直属笔记;刷新后
开关状态保持。 npm run selftest:真实 WebView 中渲染 6 篇示例(含 HTML)并完成 PNG/PDF
导出,报告为ok: true、0 errors;picsum 远程图不可达记为 1 条 warning
(既有容错策略,不阻塞发布),--require-html报告校验通过。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.8.0-win-x64-portable.zip |
| Linux | rustmd_1.8.0_amd64.deb / rustmd_1.8.0_amd64.AppImage |
| macOS | rustmd-1.8.0-macos-universal.dmg |
Windows 为自签名(SmartScreen 仍提示未知发布者)。macOS 为 ad-hoc 签名、未公证:
首次启动会被 Gatekeeper 拦截,请在系统设置 → 隐私与安全性中选择“仍要打开”,
或执行 xattr -dr com.apple.quarantine /Applications/rustmd.app。
请优先使用对应平台的 .sha256 / SHA256SUMS-linux.txt 校验;合并的
SHA256SUMS.txt 需要先把全部 Release 资产下载到同一目录再执行
sha256sum -c SHA256SUMS.txt。
rustmd v1.7.0
rustmd 1.7.0
这一版新增最近笔记库快速切换:在多个笔记库之间来回切换时,不必每次都从
盘符和文件夹树里重新找路径。
新增
- 最近笔记库列表:侧栏“切换笔记目录”按钮直接弹出最近打开的目录,当前
笔记库带“当前”标记;点一下即可切换,非当前项可用×移除。列表按最近
使用排序,最多 8 个,重启应用后仍在。 - 键盘与关闭行为:
Esc或点击弹层外部关闭;按Esc关闭时焦点回到切换按钮。 - 引导页一键进入:首次启动或上次目录不可用时,目录选择页也显示最近目录,
点击即打开,不用重新浏览系统目录树。 - 浏览从当前目录开始:弹层里的“浏览其他目录…”会把当前笔记库作为原生
目录对话框的初始位置;选中后直接打开。 - Windows 路径去重:忽略大小写与
/、\差异,同一目录不会在列表里
出现两次。 - 切换前仍会先保存未保存内容;保存失败照旧弹出确认,不会静默丢修改。
变更
- 最近目录只保存在本机
localStorage.rustmd-recent-dirs,不上传、不写入
笔记库,也不改变笔记文件格式。 - 纯前端改动(
main.js/vaultlist.js/api.js/style.css/ i18n /
index.html):不新增 IPC,不改变 Rust 命令、权限、CSP、路径封闭和 HTML
隔离边界。 - README 中英文版、AGENTS、架构/测试/发布/安全/审计文档同步更新,并新增
中英文“最近笔记库切换”截图。 - Windows 绿色 zip 随附 README/CHANGELOG/
docs/(含截图)与 SECURITY,
解压后离线查看 README 时截图与文档链接可用。
验证
npm run check:ESLint、26 个前端单测、仓库/版本检查、cargo fmt、
clippy-D warnings、58 个 Rust 测试、Vite build 全部通过。npm run selftest:6 篇示例(含 HTML)通过;Markdown/HTML PDF 仍为矢量
文字,HTML iframe、本地资源内联和远程图片警告路径保持覆盖(本次 picsum
远程图不可达,按既有策略记为 warning,不阻塞发布)。- 浏览器 mock 交互检查:切换、MRU 更新、移除、ESC/焦点、中英文文案和
900×560 最小窗口布局全部通过。 - GitHub Actions release workflow 会再次运行
npm run check+ Linux Xvfb E2E- release-notes preflight,再构建三端资产。
下载
| 平台 | 文件 |
|---|---|
| Windows | rustmd-1.7.0-win-x64-portable.zip |
| Linux | rustmd_1.7.0_amd64.deb / rustmd_1.7.0_amd64.AppImage |
| macOS | rustmd-1.7.0-macos-universal.dmg |
Windows 为自签名(SmartScreen 仍提示未知发布者)。macOS 为 ad-hoc 签名、未公证:
首次启动会被 Gatekeeper 拦截,请在系统设置 → 隐私与安全性中选择“仍要打开”,
或执行 xattr -dr com.apple.quarantine /Applications/rustmd.app。
请优先使用对应平台的 .sha256 / SHA256SUMS-linux.txt 校验;合并的
SHA256SUMS.txt 需要先把全部 Release 资产下载到同一目录再执行
sha256sum -c SHA256SUMS.txt。