Repository navigation
Releases
v0.11.0:回收站(批注 + 整文档)与删除引导
回收站(双类型)
- 删除不再直接消失:批注与整文档删除后进入回收站,保留 7 天,过期自动清理
- 批注删除引导:选中含失锚批注时,确认弹层出现「标记为已解决」第三选择——失锚批注的批语仍然完整,归档比删除更有利于保留以往的标注
- 整文档入站:删除文档时连批注一起入站,恢复即整份找回;确认话术同步改为回收站引导
- 回收站弹层:侧栏头部新入口(带计数徽标);文档与批注混排、按删除时间倒序、每条显示剩余天数;支持单条恢复、彻底删除(二次确认)、清空(二次确认)
底层
- 会话格式 v3:
Workspace.trash判别联合(TrashedAnnotation | TrashedDoc),v1/v2 会话自动迁移 confirm弹层泛化为三键choiceDialog,原二次确认 API 行为不变- 文件导入的会话解析统一走
parseWorkspace迁移入口
skill 子模块(natural-talk v1.1.0)
- B19–B23 审稿批注规则沉淀 + 扫描器 B19/B20/B22 确定性模式 + 批注实录库
验证:vitest 241/241 · playwright e2e 39/39 · tsc + vite build 通过
v0.10.2 · 锚定算法重写 + 类型清单统一
锚定算法重写(多策略 + 置信度门控)
修复:编辑原文后,被批注的引文即使上下文已变(如单字引文「调」在「调→调节」后),旧算法仍会把批注锚回原位——现在这类可疑锚点会被置信度门控否决,批注转为失锚并钉在真实改动点(字符级 diff)。
- 多策略候选:精确命中优先;引文被小改(相似度 ≥85%)时按编辑距离模糊回锚(approx-string-match,Hypothesis 生产同款)
- 加权评分:引文相似 50 / 前后文各 20 / 位置提示 2,归一化择优
- 置信度门控按引文长度分级:≤2 字需上下文全吻合、3–7 字至少一侧、≥8 字自证;唯一精确命中放宽——全文改写后引文唯一存活的导入场景不再误判失锚
- 类型筛选 chips 与撰写卡统一:人工四类常驻(含 0 计数),问题 / AI 味等机器类型存在时才追加;清单单一来源 core ALL_KINDS
v0.10.1 · 侧栏批量操作 + 类型统一 + 开关
侧栏批量操作与体验统一
- 卡片多选:每张批注卡悬停浮现勾选框(有选中项后常驻),组卡可整组勾选;批量条支持全选 / 反选 / 快速选中(失锚 / 未解决 / 已解决 / 改稿侧 / 按类型)
- 批量动作:批量解决 / 重开、批量删除(二次确认),操作簇滑入动画 + toast 反馈
- 类型统一:类型筛选 chips 以卡片实际拥有的类型为准(0 计数不再空占位),规范清单收敛到 core
ALL_KINDS单一来源,杜绝 UI 各自硬编码漂移 - 「正文只高亮当前筛选结果」改为开关(toggle switch,滑钮动画)
- 修复:e2e 选区交互升级为跨文本节点定位(同段二划选不再 IndexSizeError)
v0.10.0 · 阅读偏好:主题 / 纹理 / 字体字号 + 悬浮快捷设置
阅读偏好
- 五套主题:亮色 / 纸黄(阅读器暖纸底)/ 暗色 / 熊猫(深边栏 · 浅正文)/ 熊猫·反色(浅边栏 · 深正文);设置里每套主题带真实 token 上色的缩略示意界面图
- 背景纹理:纸纹 / 方格 / 横线 / 织物(参考阅读器设计,线条色随明暗极性自适应)
- 字体与字号:默认 / 宋体 / 楷体 / 等宽;字号滑杆 13–22px,行距随字号自动缩放
- 右下悬浮设置球:闲置 40% 透明、hover 全不透明,沿 1/4 圆弧展开主题 / 纹理 / 字号 / 字体,悬停再弹二级选项或滑杆(触摸点按等效),「设置」打开完整弹层;顶栏明暗按钮在当前主题家族内翻转极性
- 文档树反选:批量勾选支持一键反选
全部偏好即时生效、localStorage 持久化、首屏无闪烁。
v0.9.1 · 弹层溢出修复 + 版本号
修复
- 确认弹层溢出:二次确认弹层(AlertDialog)与文本输入弹层统一加
max-h-[86vh]+ 可滚动正文——批量删除等长描述场景不再溢出视口(所有确认弹层共用的约束,一次修根) - 批量删除描述:文档名列表截断展示(前 3 个 + 「等 N 份文档」),弹层保持紧凑
- toast:加最大宽度上限,超长提示自动换行不超宽
新增
- header 品牌区显示当前版本号(构建期由 vite define 注入 package.json version,单一来源;悬停提示当前版本)
质量门禁
vitest 176 + e2e 33 全过;12 份长名文档批量删除确认弹层实测无溢出(弹层底边 455px < 720px 视口)。
v0.9.0 · 文件夹导入冲突诊断树
导入冲突诊断树
工作区为空时,文件夹 / 单文件导入直接进;已有文档时,同名冲突(相对路径 + 文件名)先弹诊断树再落盘:
- 逐行决策:覆盖 / 重命名 / 跳过 三选一;重命名插扩展名前递增(
chapter-1-1.txt),自动避开工作区与本次导入的其余落点 - 三个批量预设:全部覆盖 / 覆盖未标注的 / 覆盖标注的
- 覆盖不毁批注:原有批注按「编辑原文」同款管线重锚到新文本;每行预演重锚 / 失锚条数,先知情再确认
- 同名同文标「无变化」固定跳过;取消 = 整次导入作废(W3C / 会话一并作废,一件不进)
- 单文件导入走同一套诊断,无双轨逻辑;徽标与摘要(覆盖 X · 重命名 Y · 直接导入 N)实时联动
边界经 7 题表单与维护者确认定稿(schemaui 表单留档 .schemaui/answers/)。
质量门禁
vitest 176(+17:冲突键 / 重命名递增 / 逐行动作 / 批量预设 / 诊断树交互)+ Playwright e2e 33(+3:覆盖重锚全链路 / 重命名并存 / 取消作废)全过;诊断树明暗双主题视觉核对通过。
v0.8.0 · 统一撰写表单 + VSCode 式 Aa / .* 匹配
统一撰写表单(一套组件三处复用)
新组件 ui/composer.ts:类型 chips + 快捷语 + 批注语 + 建议替换词 一体,输入法契约内置(输入事件只做定向 DOM 更新,组合输入不被打断)。三处宿主换装同一表单:
- 划词撰写卡:新增「建议替换词」输入——划词也能直接下达机器可执行的改写指令;草稿按段落记账(含类型与替换词),重选即取回
- ⌘F 搜索面板:内嵌同款表单,与划词卡观感、交互完全一致,不再维护两套
- 批注弹层编辑态:同款表单 + 头部类型徽标实时跟随;编辑状态跨重渲染保留;可给已有批注补写/清空替换词(导出同步生成指令)
VSCode 式匹配开关
- Aa:区分大小写(缺省不敏感)
- .*:查询按正则解析(缺省字面匹配);非法正则不抛错——计数提示「正则无效」+ 输入描红
- 零长命中自动跳过(批注区间必须非空);开关在会话内跨开合记忆
质量门禁
vitest 159(+9:匹配方式语义、替换词草稿/提交、弹层替换词与徽标跟随)+ Playwright e2e 30(+4:Aa / .* / 非法正则 / 卡内替换词→导出)全过;三宿主 + 暗色 390px 视觉核对通过。
v0.7.9 — ⌘F 搜索面板:预览描边 · 替换指令 · 跨文档
- ⌘F / Ctrl+F 唤起 VSCode 式搜索面板:输入即在正文实时描边命中,Enter/‹› 跳转,Esc 关闭
- 替换式批量重写:可填建议替换词,三种导出生成机器可执行指令「→ 替换为「…」」
- 跨文档开关:命中与批量批注覆盖工作区全部文档
- 分组卡内单条编辑:展开后逐条直开编辑弹层
- 修复搜索输入打断输入法的问题(面板输入事件只做定向更新,永不重绘自身节点)
v0.7.8 — 搜索批量批注
搜索批量批注:侧栏新增搜索框,实时显示正文命中数;选类型、点快捷语,一键给 N 处相同内容写同一条批注。侧栏聚合为一张卡——N 处统计、展开逐条摘录与跳转、整组一键解决/删除(删除带数量确认)。
架构上每处批注仍是独立的一阶批注(共享 groupId 仅作侧栏聚合),三种导出、W3C 导入导出、编辑后重锚全部按单条批注照常工作。
v0.7.7 — 危险操作二次确认 + 失锚可见性修复
示例按钮:工作区有内容时先弹确认——告知将新建示例文档并跳转过去(当前文档与批注保持不变);已有示例文档时直接复用跳转,不再堆积副本;空工作台保持免打扰。
编辑原文:保存前预演重锚,若有批注的引文被改掉(将失锚)先弹危险确认,取消则留在编辑态;单纯的位置平移不打扰。
顺带修复:整行被删等编辑会让失锚批注被钳制成零宽区间——正文里看不到任何标记也点不中。现在塌缩时自动扩展 1 字符,失锚波浪线可见可点。