Repository navigation
v0.2.0 — 首个正式版本(常驻笔记区 + 字号缩放 + 9 条缺陷修复)
首个带 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 条)
- 软换行长段落"点哪光标都在行首" —— 命中判定把"不在同一视觉行"当成"点在更前面",二分一路塌到行首;
现在按视觉行夹区间 + 行内二分,并优先用浏览器自身的文本命中。 - 切「预览/源码」丢未保存的编辑 —— 载入 effect 的依赖带着模式,切模式即销毁重建并重读磁盘;
现在切模式用当前文档重建,不重读。 - 关标签 / 收分屏 / 切工作区不落盘 —— 卸载前没有 flush;现在 cleanup 先取文本再销毁并保存,
关页面 / 切后台走navigator.sendBeacon尽力落盘(并处理 beacon 后版本号过期导致的下一次误报冲突)。 - 表格「删行」删错行 —— 行号语义统一为「数据行 = tbody 下标(0 起),表头 = -1」,
修掉"首行删不掉、其余删的是上一行"。 - 改名后标签失联 ——
refresh依赖写漏导致一直用旧闭包,改名后标题/路径不更新、继续编辑保存报NOT_FOUND;
现在改名即时生效,新建笔记也会自动打开。 - 索引每 ~8s 整份重写、一次写失败永久失效 ——
persist()内容没变就不写盘、失败不毒化后续;
lastUsedAt只在会话换工作区时更新。 - 浮层半透明穿帮 —— 面板/菜单/弹层改用与宿主菜单同一套材质(
--dsw-specific-menu+backdrop-filter)。 - 关键按钮被挤出屏幕 —— 「预览/源码」与「保存」移到编辑器条右侧固定簇(不参与横向滚动),标题不再被压成 30px。
- 英文界面混中文 —— 代码卡「复制」、元数据 chip、快速打开占位符等全部走字典,并加守卫测试
(双字典键必须一致、英文值不许含中文、DOM 文案不许硬编码中文)。
另外修掉了几处更早的编辑期缺陷:wrapSelection 用普通对象冒充选区导致"设一次格式就卡死"、
表格重影与吞掉紧跟段落的行、点击正文时光标漂一行、菜单项点击无响应、拖拽高亮卡住、分屏切源码后另一栏行内装饰全丢。
安全与可靠性
- 四条硬不变量写进
AGENTS.md:永不删除、永不移动用户的.md(只有"改名"与"移入回收站"两处显式例外,
且彻底删除要两次确认);Markdown 权威、索引是可重建的派生态;只加一个 Agent 工具;不改 DSH 核心。 - 保存是守卫式的(带
expectedVersion),并有身份自愈:frontmatter 的dsh-note-id被删/被改时,
Host 按索引写回并在响应里带restoredId。
验证
npm test:164 条单测全绿(含落点、表格、索引落盘与双语文案的守卫用例);build-graphcycles: 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 字段。