Skip to content

v0.2.0 — 首个正式版本(常驻笔记区 + 字号缩放 + 9 条缺陷修复)

Choose a tag to compare

@Phy-D Phy-D released this 30 Sep 17:45
· 120 commits to master since this release

首个带 tag 的正式发布(0.1.0 是开发期初始版本,当时没有打 tag、也没有 release)。
自上次推送累计 40 个提交:P0–P6 全部落地,并修完两个只读审计会话里核实过的 9 条缺陷。

亮点

  • 笔记区常驻:侧栏切到别的 tab、或把整栏收起,笔记区只是被藏起来(注册时 keepMounted: true)——
    笔记树、打开着的标签、光标与滚动都在原处,切回来不再重新加载「读取中…」;隐藏期间不轮询,回来立刻对一次账。
  • 字号 / 图标大小可调:标题栏 Aa(五档预设 + 滑块 + 复位),只作用于笔记区;基准字号跟随宿主
    「设置 → 通用 → 字体大小」。统一公式 cssSize() = calc(Npx × 系数 + 增量),不用 zoom(那会把浮层坐标推偏)。
  • 标签栏 + 左右分屏:每栏一条自己的标签栏;点=替换、Ctrl/Cmd+点击或中键=新标签、拖标签或 ⇥ 分屏;
    跨栏拖动、栏内按中线重排、空栏自动收;布局按工作区记住。
  • 笔记树 + 纳入管理面板:工作区里的 md 分三类(笔记 / 候选 / 杂项);面板按最近改动或文件夹分组,
    可搜索、多选、批量纳入或忽略,并显式管理扫描范围(默认只扫 notes/)。
  • 编辑器:预览/源码按栏独立;工具栏 21 键(6 组 + 4 弹层:标题 / 链接 / 表格 / 公式);
    右键菜单(引用此处 / 文本格式 / 段落设置 / 插入,表内换成插删行列);[[双链]] 补全;
    图片粘贴与拖入;真表格就地编辑;代码卡片(语言可改、一键复制);块级公式;frontmatter 收成一行元数据 chip;
    Ctrl/Cmd+S/F/B/I/E、Ctrl+1…6/0、表格内 Tab 跳单元格。
  • 大纲面板(标题树,可拖拽重排整节)、快速打开(Ctrl/Cmd+P)、回收站(可恢复 / 彻底删除)。
  • 工作区切换:能切到别的已登记工作区,各自独立的树与布局;缺 notes/ 的工作区给空态卡片。
  • Agent 侧:新增 knowledge 工具(登记 / 注销 / 归类 / 分类树 / 未归类 / 重扫 / 候选与忽略 / 回收站);
    内容读写仍然只用 DSH 既有的文件工具。

修复(用户实测的 9 条)

  1. 软换行长段落"点哪光标都在行首" —— 命中判定把"不在同一视觉行"当成"点在更前面",二分一路塌到行首;
    现在按视觉行夹区间 + 行内二分,并优先用浏览器自身的文本命中。
  2. 切「预览/源码」丢未保存的编辑 —— 载入 effect 的依赖带着模式,切模式即销毁重建并重读磁盘;
    现在切模式用当前文档重建,不重读。
  3. 关标签 / 收分屏 / 切工作区不落盘 —— 卸载前没有 flush;现在 cleanup 先取文本再销毁并保存,
    关页面 / 切后台走 navigator.sendBeacon 尽力落盘(并处理 beacon 后版本号过期导致的下一次误报冲突)。
  4. 表格「删行」删错行 —— 行号语义统一为「数据行 = tbody 下标(0 起),表头 = -1」,
    修掉"首行删不掉、其余删的是上一行"。
  5. 改名后标签失联 —— refresh 依赖写漏导致一直用旧闭包,改名后标题/路径不更新、继续编辑保存报 NOT_FOUND;
    现在改名即时生效,新建笔记也会自动打开。
  6. 索引每 ~8s 整份重写、一次写失败永久失效 —— persist() 内容没变就不写盘、失败不毒化后续;
    lastUsedAt 只在会话换工作区时更新。
  7. 浮层半透明穿帮 —— 面板/菜单/弹层改用与宿主菜单同一套材质(--dsw-specific-menu + backdrop-filter)。
  8. 关键按钮被挤出屏幕 —— 「预览/源码」与「保存」移到编辑器条右侧固定簇(不参与横向滚动),标题不再被压成 30px。
  9. 英文界面混中文 —— 代码卡「复制」、元数据 chip、快速打开占位符等全部走字典,并加守卫测试
    (双字典键必须一致、英文值不许含中文、DOM 文案不许硬编码中文)。

另外修掉了几处更早的编辑期缺陷:wrapSelection 用普通对象冒充选区导致"设一次格式就卡死"、
表格重影与吞掉紧跟段落的行、点击正文时光标漂一行、菜单项点击无响应、拖拽高亮卡住、分屏切源码后另一栏行内装饰全丢。

安全与可靠性

  • 四条硬不变量写进 AGENTS.md:永不删除、永不移动用户的 .md(只有"改名"与"移入回收站"两处显式例外,
    且彻底删除要两次确认);Markdown 权威、索引是可重建的派生态;只加一个 Agent 工具;不改 DSH 核心。
  • 保存是守卫式的(带 expectedVersion),并有身份自愈:frontmatter 的 dsh-note-id 被删/被改时,
    Host 按索引写回并在响应里带 restoredId。

验证

  • npm test:164 条单测全绿(含落点、表格、索引落盘与双语文案的守卫用例);build-graph cycles: 0;
    npm run build 复现字节一致的 lib/client.js。
  • 浏览器里逐条实测(其中涉及写操作的项目用页内探针拦 POST /dsh-notes/save,保证验证期间不写用户笔记;
    结束后把 notes/ 逐字节还原并用 md5 复核)。

安装

DSH 插件,以 link: 装进 profile(步骤见 README.md)。
本版本在本机 DSH 0.2.0-rc.2 上验证,依赖官方右侧栏扩展点 ctx.sidebarRightTabs 与 keepMounted 字段。