GongYuanCaiJi
dsh-changelog
自动生成发布说明(移植自 @noice-tech/pi-changelog)
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 14, 2026
- Updated
- Aug 15, 2026
Introduction
dsh-changelog
简体中文 | English
一句话:打一句
/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 summary→Context→ 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 CLI(gh auth login)/release-notes会创建或覆盖其输出文件,.dsh/tmp/应保持 gitignore 且不发布
移植说明(对上游 @noice-tech/pi-changelog@1.3.0)
逐字保留: 三个提示词文件(prompts/release-notes.md、setup-release-notes-style.md、unreleased.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
One line: type
/unreleasedto 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 —
/unreleasedaudits merged PRs since the latest tag without creating tags, releases, commits, branches, or files - 🎨 Repo-specific voice —
/setup-release-notes-stylewrites.dsh/release-notes-style.mdso 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 priority —
Public summary→Context→ 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
/unreleasedand/release-notesrequire an authenticated GitHub CLI (gh auth login)/release-notescreates 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
yourself — THIRD_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.