# Changelog 本项目的重要变更都记录在此文件。格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/)。 ## [Unreleased] ### Added - `sourceKind: auto`:按 `session.header.version` 自动选择 v3(`{ kind: 'plugin', plugin: 'task-guard' }`)或 v4(`{ kind: 'plugin:task-guard' }`)notice source;支持 DSH 0.1.5-rc.2 / 0.2.0-rc.2 / 0.2.1-rc.2。 - `docs/compatibility.md`:2026-10-17 DSH 版本审计(桌面端 `0.2.0-rc.2` = npm `latest`;`0.2.1-rc.2` = `next`;session format 仍为 v4;hook 与 `todo_write` 未变)。 - `.github/workflows/publish.yml`:npm trusted publishing(OIDC + provenance),推 `v*` tag 自动发布;手动触发默认只做 dry-run。 - `docs/release.md`:首次手动发布、staged publishing、Trusted Publisher 配置、npmmirror 同步与账号暂停恢复流程。 - `publishConfig.registry` 固定为 `https://registry.npmjs.org/`,避免默认 registry 是只读镜像时发布到错误地址。 ### Verified - 2026-10-18:桌面端升级到 DSH `0.2.1-rc.2`;live 冒烟通过(只含 pending 的写入收到即时 notice,设为 in_progress 后 5 次顶层调用收到停滞 notice,无 `format v4` 错误),无需改代码;基准更新到 `0.2.1-rc.2`。 ### Planned - 可选的 `autoPromote`:在 `todo_write` 留下 pending 且没有 active 时,自动把下一个任务设为 `in_progress`。 - 更细的阶段边界信号(例如 subagent 结束、后台任务结算)作为停滞计数的补充。 ## [1.0.0] - 2026-10-17 ### Added - `todo_write` 阶段边界提醒:当清单里还有 `pending`、却没有任何 `in_progress` 时,在工具结果后追加一条插件来源的 `notice`,提示把下一阶段标为 `in_progress`;默认不把写入变成错误。 - 停滞提醒:距离上次成功 `todo_write` 超过 `staleAfterCalls` 次工具调用且清单仍有未完成项时,追加一条 notice;可按 `repeatEveryCalls` 重复,并在同一 step 的并行调用中最多只发一条。 - 可选严格模式:`rejectMissingActive: true` 直接拒绝缺少 active 的 `todo_write`;`blockAfterCalls: N` 在连续 N 次未更新后拦截下一次工具调用。 - 配置项:`enabled`、`locale`、`staleAfterCalls`、`repeatEveryCalls`、`blockAfterCalls`、`rejectMissingActive`、`include`、`exclude`、`maxListItems`。 - 完整的单元测试与真实 Cordis Context 集成测试,覆盖默认/严格模式、阈值、重复、同 step 去重、`turn/start` 重置、配置校验和 patch 配置一致性。 - 中文/英文 README、CHANGELOG、CONTRIBUTING、SECURITY、MIT LICENSE 和 GitHub Actions CI。 ### Changed - 默认只提醒、不打断任务:`rejectMissingActive: false`,`blockAfterCalls: 0`。 - notice 使用 DSH session format v4 的 producer-owned source kind:`{ kind: 'plugin:task-guard', form: 'notice', summary: ... }`。 - notice 走 `additionalContexts` 通道,不修改系统提示词,也没有常驻提示词段落。 ### Fixed - 修复 v4 下使用旧 `{ kind: 'plugin', plugin: 'task-guard' }` 导致的整轮失败:`format v4 message requires a producer-owned source kind`。 - 修复插件改名后 bundle patch 仍残留旧 `requireActive` 字段导致的 `unknown config field` 加载错误。 - 修复首次版本默认硬拦截合法计划写入、使任务“装上后直接失败”的问题。 ### Verified - `pnpm check`:typecheck、build、15 个测试全部通过。 - live 测试:只含 pending 的 `todo_write` 成功并收到即时 notice;设为 in_progress 后连续 5 次工具调用收到停滞 notice;两轮均无 `format v4` 错误。 - 真实三阶段任务:阶段边界提醒和停滞提醒都推动了下一阶段的状态更新。 [Unreleased]: https://github.com/MCviseron/dsh-task-guard/compare/v1.0.0...HEAD [1.0.0]: https://github.com/MCviseron/dsh-task-guard/tree/v1.0.0