Bundle
dsh-changelog
自动生成发布说明(移植自 @noice-tech/pi-changelog)
- Source
- GongYuanCaiJi
- stars
- 1 stars
- License
- MIT
- Updated
- Updated yesterday
Readme
# dsh-changelog 简体中文 | [English](#english) [](./LICENSE) [](https://github.com/deepseek-ai/deepseek-harness) [](https://www.npmjs.com/package/@noice-tech/pi-changelog) > **一句话:打一句 `/unreleased` 预览未发布的改动,或 `/release-notes <版本>` 从 git 历史自动生成发布说明——公开文案和内部来源审计分开存放,敏感信息不进公开文件。** 移植自 [`@noice-tech/pi-changelog`](https://www.npmjs.com/package/@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 源安装: ```bash dsh plugin --profile <你的 profile> add github:GongYuanCaiJi/dsh-changelog ``` 安装时会通过 `prepare` 脚本自动构建 `dist/`。若 pnpm 拦下构建步骤,在 profile 的 `pnpm-workspace.yaml` 里把本包加进 `allowBuilds`。 从本地目录安装(需要先自行构建): ```bash 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](https://cli.github.com/)(`gh auth login`) - `/release-notes` 会创建或覆盖其输出文件,`.dsh/tmp/` 应保持 gitignore 且不发布 <details> <summary>移植说明(对上游 <code>@noice-tech/pi-changelog@1.3.0</code>)</summary> **逐字保留:** 三个提示词文件(`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](./THIRD_PARTY_NOTICES.md) 钉住了上游 tarball 的 integrity / shasum 与逐字文件的 SHA-256,附可直接复制的比对命令。 **适配层(新增,上游无对应物):** 入口改为 Cordis namespace 形状;三个提示词注册为 `commands` 服务上的 slash 命令;命令触发时把提示词原文(`$ARGUMENTS` 替换为你的输入)经 `agent.followup` 交给 agent 执行。 `/commit` 与 `/commit-config` 属于上游打包依赖 [`@noice-tech/pi-commit`](https://www.npmjs.com/package/@noice-tech/pi-commit) (独立包,另售),不在本移植范围内。 **已知限制:** agent 收到的提示词是英文的 —— 那是上游原文,逐字保留未做翻译。 </details> ## 🛠 开发 ```bash npm install # 触发 prepare,产出 dist/ npm test # 构建后跑单元测试(node --test) ``` 端到端验收(用一次性 profile,用完删除): ```bash P=verify-$(date +%s)-$$ dsh plugin --profile "$P" add . dsh --profile "$P" ``` ## 📄 License MIT。上游 [`@noice-tech/pi-changelog`](https://www.npmjs.com/package/@noice-tech/pi-changelog) `Copyright (c) 2026 Noice Tech`,本移植 `Copyright (c) 2026 GongYuanCaiJi`。见 [LICENSE](./LICENSE)。 感谢 [noice-tech/noice-pi](https://github.com/noice-tech/noice-pi) 的原作者 —— 如果这个插件对你有用,**也请去给[上游仓库](https://github.com/noice-tech/noice-pi)点个 star**。 --- # English [](./LICENSE) [](https://github.com/deepseek-ai/deepseek-harness) [](https://www.npmjs.com/package/@noice-tech/pi-changelog) > **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`](https://www.npmjs.com/package/@noice-tech/pi-changelog) (MIT, `1.3.0`) to [DeepSeek Harness](https://github.com/deepseek-ai/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 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: ```bash 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): ```bash 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](https://cli.github.com/) (`gh auth login`) - `/release-notes` creates or overwrites its output files; keep `.dsh/tmp/` ignored and unpublished <details> <summary>Port notes (vs upstream <code>@noice-tech/pi-changelog@1.3.0</code>)</summary> **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](./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`](https://www.npmjs.com/package/@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. </details> ## 🛠 Development ```bash npm install # runs prepare, produces dist/ npm test # build + unit tests (node --test) ``` End-to-end acceptance (disposable profile, deleted after use): ```bash P=verify-$(date +%s)-$$ dsh plugin --profile "$P" add . dsh --profile "$P" ``` ## 📄 License MIT. Upstream [`@noice-tech/pi-changelog`](https://www.npmjs.com/package/@noice-tech/pi-changelog) `Copyright (c) 2026 Noice Tech`; this port `Copyright (c) 2026 GongYuanCaiJi`. See [LICENSE](./LICENSE). Thanks to the authors of [noice-tech/noice-pi](https://github.com/noice-tech/noice-pi) — if this plugin is useful to you, **please also star the [upstream repository](https://github.com/noice-tech/noice-pi)**.
Install
dsh plugin --profile web add github:GongYuanCaiJi/dsh-changelog
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-changelog from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.