# Changelog 本项目遵循「版本 → 变更」的简单记录方式;每个版本写清楚**做了什么、为什么**。 格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号用 [SemVer](https://semver.org/lang/zh-CN/)。 ## [0.3.0] — 2026-09-09 这一版把"档案"从「存下来」推进到「能被回看、能被重想」:加了两条历史能力、一类回访问题、 一条标签纪律,并把每条记录的出处明确渲染到卡片上。 ### Added - **`read_history`:对象卡的历史回放。** 把某张卡倒回到「第 N 次阅读之后」或「某个日期之前」, 返回**当时那一版完整的卡片 Markdown**。因为 `library.jsonl` 是只追加事件流、卡片是可重建视图, 任意时点的卡片都能精确重放——版本历史不需要额外存储,它就是事件流本身。 支持三种定位:`noteFile`(卡片名)/ `id`(任一事件 id)/ `repo(+path/symbol)` 坐标。 - **`read_delete`:撤销一条记录。** 删除某条事件后自动重建该对象的卡片、hub 与 MOC; 若删的是该对象最后一条事件,卡片文件一并移除。事件流只追加、删除不可恢复, 因此工具强制 `confirm=true`,避免误删。 - **回访问题(`revisit`)。** `read_capture` / `read_note` / `read_expand` 可带 2–3 条问题, 卡片末尾汇总为「回访问题(下次重想这几条)」小节(跨事件去重、上限 6 条)。 这是档案的**提取练习**面:回看时先自己答一遍,而不是把卡片重读一遍。 - **标签纪律(`tags` / `newTags`)。** `tags` 只接受档案里已存在的标签(或本对象已用过的), 被拒的标签会回传给模型;确实要新增主题词走 `newTags`。空档案有**种子期**:一个标签都没有时, 第一批记录写入的标签作为词表起点(否则永远无法建表)。卡片标签是各次事件的并集, 人工写过的标签永远不会被覆盖。避免标签表无限膨胀。 - **写入后的建议(建议,非执行)。** 快记/深读返回 `suggestUpgrade`(该对象读过多次仍只有快记) 与 `relatedNotes`(vault 里可能相关的旧笔记),由用户确认后才走 `read_expand` / `read_link`。 - **`/codevault history`** 子命令:打印历史回放用法与可回放的卡片清单(模型无关,纯代码)。 ### Changed - 卡片「阅读时间线」每条记录现在带**出处行**:`> 出处:<仓库 · 路径 → 符号>@ · 记录于 `, 每条结论都能追到是哪一次阅读、对着哪个版本读出来的。 - `store.ts` 的卡片渲染抽为纯函数 `renderObjectCard(events, key, noteFile)`: 实时卡片与历史回放共用同一套投影,保证"回放出来的就是当时那张卡"。 - `/codevault vault` 的档案结构说明更正为 V2 对象卡布局(此前仍写着"每条记录一张卡")。 - 工具数 9 → 11;README、`code-reading` 技能同步更新(回访问题、标签纪律、历史回放/删除的用法与纪律)。 ### Notes - 旧档案(无 `revisit` 字段的行)读取时自动补空数组,无需迁移;卡片与 hub/MOC 会在下次写入时按新布局重建。 - 删除是物理移除(事件流本身被重写),不是标记删除——这是"撤销"而非"归档",故加确认门槛。 ## [0.2.0] — 2026-09-08 ### Added - 对象卡模型(V2):`library.jsonl` 只追加事件流为唯一事实源,`notes/<对象名>.md` 是按 `符号 > 文件 > 仓库` 最深坐标归并的投影;同一对象的多次阅读累积在同一张卡(时间线 + 去重提炼)。 - Obsidian vault 只读上下文(`vaultDir`):`vault_search` / `vault_read` / `vault_suggest` + `read_link` 补结构化 `[[链接]]`,scope 区分用户笔记与档案卡,路径限定在 vault 内。 - `read_expand`:把快记原位升级为深读笔记(同一张卡重写,文件名与链接不漂移)。 - 仓库 hub 与 `MOC.md` 自动重建;MIT 许可、`THIRD-PARTY.md` 第三方清单。 ### Changed - 发布方式:`lib/` 入库,GitHub 源码安装无需构建步骤;提供 Release 预构建 tarball (`dsh-codevault.tgz`),供 dsh-market 优先选用。 - README 与描述改为平实行文;徽章改为读取 GitHub 的 release/license。 ### Fixed - YAML 条目描述的引号问题(含 `": "` 的英文描述必须加引号),修复收录 CI 的解析失败。