Back to home

GongYuanCaiJi

dsh-changelog

自动生成发布说明(移植自 @noice-tech/pi-changelog)

Stars
0
Language
JavaScript
Created
Aug 14, 2026
Updated
Aug 15, 2026

Introduction

dsh-changelog

简体中文 | English

License DSH 上游

一句话:打一句 /unreleased 预览未发布的改动,或 /release-notes <版本> 从 git 历史自动生成发布说明——公开文案和内部来源审计分开存放,敏感信息不进公开文件。

移植自 @noice-tech/pi-changelog(MIT,1.3.0), 三个提示词逐字保留,只把 .pi/ 路径改成 dsh 的 .dsh/ 约定。

✨ 功能

  • 📝 从 git 历史生成发布说明 —— /release-notes <version|from..to> 解析 GitHub Release、PR 与提交,写出公开文案
  • 🔍 预览未发布改动 —— /unreleased 审计最近一个 tag 以来的合并 PR,不创建 tag、release、commit、分支或文件
  • 🎨 仓库专属文风 —— /setup-release-notes-style 生成 .dsh/release-notes-style.md,让发布说明贴合你的产品受众与语气
  • 🔒 隐私安全 —— 公开文案排除链接、PR 号、commit 哈希、私有 URL 与内部备注;来源审计单独写进 .dsh/tmp/,不进公开文件
  • 🧭 来源优先级明确 —— Public summaryContext → Release body → PR title → commit message,逐级回退

📸 效果

在任意有真实提交历史的仓库里(示意输出,格式与上游提示词一致;以 deepseek-harness 的提交为例):

> /unreleased

Unreleased preview since 0.1.0-rc.4

Release recommendation: yes
Public candidates: 10
Internal/skipped: 12
Needs cleanup: 3

## Public candidates

- 移除首次启动的全屏 beta 提示,遥测保持默认关闭
  Source: #2470 feat/remove-beta-notice
- 统一 Web UI 引导弹窗流程
  Source: #2503 agent/onboarding-modal-flow
- Web UI 新增英文引导文案
  Source: #2512 codex/2503-english-onboarding-copy
- …

📦 安装

本包尚未发布到 npm,用 GitHub 源安装:

dsh plugin --profile <你的 profile> add github:GongYuanCaiJi/dsh-changelog

安装时会通过 prepare 脚本自动构建 dist/。若 pnpm 拦下构建步骤,在 profile 的 pnpm-workspace.yaml 里把本包加进 allowBuilds

从本地目录安装(需要先自行构建):

git clone https://github.com/GongYuanCaiJi/dsh-changelog.git
cd dsh-changelog && npm install        # 触发 prepare,产出 dist/
dsh plugin --profile <你的 profile> add ../dsh-changelog

🚀 用法

/unreleased                        # 预览最近一个 tag 以来的发布候选
/release-notes 1.2.3               # 生成 1.2.3 的发布说明(写入 release-notes/1.2.3.md)
/release-notes 1.2.0..1.2.3        # 生成一个版本区间的发布说明
/setup-release-notes-style [笔记]   # 创建或精炼 .dsh/release-notes-style.md
  • /unreleased/release-notes 需要已认证的 GitHub CLIgh auth login
  • /release-notes 会创建或覆盖其输出文件,.dsh/tmp/ 应保持 gitignore 且不发布
移植说明(对上游 @noice-tech/pi-changelog@1.3.0

逐字保留: 三个提示词文件(prompts/release-notes.mdsetup-release-notes-style.mdunreleased.md)。 其中 unreleased.md 与上游逐字相同(cmp 可验);另外两个只改了路径引用 —— 把 Pi 的状态目录约定 .pi/ 换成 dsh 的 .dsh/(例如 .dsh/tmp/pi-changelog/release-notes-sources/.dsh/release-notes-style.md)。这一点你可以自己验 —— THIRD_PARTY_NOTICES.md 钉住了上游 tarball 的 integrity / shasum 与逐字文件的 SHA-256,附可直接复制的比对命令。

适配层(新增,上游无对应物): 入口改为 Cordis namespace 形状;三个提示词注册为 commands 服务上的 slash 命令;命令触发时把提示词原文($ARGUMENTS 替换为你的输入)经 agent.followup 交给 agent 执行。 /commit/commit-config 属于上游打包依赖 @noice-tech/pi-commit (独立包,另售),不在本移植范围内。

已知限制: agent 收到的提示词是英文的 —— 那是上游原文,逐字保留未做翻译。

🛠 开发

npm install      # 触发 prepare,产出 dist/
npm test         # 构建后跑单元测试(node --test)

端到端验收(用一次性 profile,用完删除):

P=verify-$(date +%s)-$$
dsh plugin --profile "$P" add .
dsh --profile "$P"

📄 License

MIT。上游 @noice-tech/pi-changelog Copyright (c) 2026 Noice Tech,本移植 Copyright (c) 2026 GongYuanCaiJi。见 LICENSE

感谢 noice-tech/noice-pi 的原作者 —— 如果这个插件对你有用,也请去给上游仓库点个 star


English

License DSH Port of

One line: type /unreleased to preview unreleased changes, or /release-notes <version> to generate release notes from git history — public copy and private source audit are written separately, so sensitive details never leak into the public file.

A port of @noice-tech/pi-changelog (MIT, 1.3.0) to DeepSeek Harness. The three upstream prompts are kept verbatim; only the .pi/ path convention was changed to dsh's .dsh/.

✨ Features

  • 📝 Release notes from git history/release-notes <version|from..to> inspects GitHub releases, PRs, and commits, then writes public copy
  • 🔍 Preview unreleased changes/unreleased audits merged PRs since the latest tag without creating tags, releases, commits, branches, or files
  • 🎨 Repo-specific voice/setup-release-notes-style writes .dsh/release-notes-style.md so notes match your product's audience and tone
  • 🔒 Privacy-safe — public copy excludes links, PR numbers, commit hashes, private URLs, and internal notes; the source audit goes to .dsh/tmp/ only
  • 🧭 Explicit source priorityPublic summaryContext → Release body → PR title → commit message

📸 Effect

In any repo with real commit history (illustrative output, format per the upstream prompt; example commits from deepseek-harness):

> /unreleased

Unreleased preview since 0.1.0-rc.4

Release recommendation: yes
Public candidates: 10
Internal/skipped: 12
Needs cleanup: 3

## Public candidates

- Remove the full-screen beta notice on first launch; telemetry stays off by default
  Source: #2470 feat/remove-beta-notice
- Unify web UI onboarding dialogs
  Source: #2503 agent/onboarding-modal-flow
- Add English onboarding copy to the web UI
  Source: #2512 codex/2503-english-onboarding-copy
- …

📦 Install

This package is not on npm yet — install from GitHub:

dsh plugin --profile <your-profile> add github:GongYuanCaiJi/dsh-changelog

The prepare script builds dist/ during installation. If pnpm blocks the build step, add this package to allowBuilds in the profile's pnpm-workspace.yaml.

From a local checkout (build it first):

git clone https://github.com/GongYuanCaiJi/dsh-changelog.git
cd dsh-changelog && npm install        # runs prepare, produces dist/
dsh plugin --profile <your-profile> add ../dsh-changelog

🚀 Usage

/unreleased                        # preview release candidates since the latest tag
/release-notes 1.2.3               # write release notes for 1.2.3 (release-notes/1.2.3.md)
/release-notes 1.2.0..1.2.3        # write release notes for a range
/setup-release-notes-style [notes] # create or refine .dsh/release-notes-style.md
  • /unreleased and /release-notes require an authenticated GitHub CLI (gh auth login)
  • /release-notes creates or overwrites its output files; keep .dsh/tmp/ ignored and unpublished
Port notes (vs upstream @noice-tech/pi-changelog@1.3.0)

Kept verbatim: the three prompt files (prompts/release-notes.md, setup-release-notes-style.md, unreleased.md). unreleased.md is byte-identical to upstream (verify with cmp); the other two change only path references — Pi's state-dir convention .pi/ becomes dsh's .dsh/ (e.g. .dsh/tmp/pi-changelog/release-notes-sources/ and .dsh/release-notes-style.md). You can verify this yourselfTHIRD_PARTY_NOTICES.md pins the upstream tarball's integrity / shasum and the byte-identical files' SHA-256, with copy-paste comparison commands.

Adapter (new, no upstream counterpart): Cordis namespace entry; the three prompts are registered as slash commands on the commands service; invoking a command delivers the prompt text ($ARGUMENTS substituted with your input) to the agent via agent.followup. /commit and /commit-config belong to the upstream's bundled dependency @noice-tech/pi-commit (a separate package) and are out of scope for this port.

Known limitation: the prompts the agent receives are in English — that is upstream text, kept verbatim and untranslated.

🛠 Development

npm install      # runs prepare, produces dist/
npm test         # build + unit tests (node --test)

End-to-end acceptance (disposable profile, deleted after use):

P=verify-$(date +%s)-$$
dsh plugin --profile "$P" add .
dsh --profile "$P"

📄 License

MIT. Upstream @noice-tech/pi-changelog Copyright (c) 2026 Noice Tech; this port Copyright (c) 2026 GongYuanCaiJi. See LICENSE.

Thanks to the authors of noice-tech/noice-pi — if this plugin is useful to you, please also star the upstream repository.