feat(release): generate AI-assisted release notes - #6756
Conversation
|
Here is a concrete preview from a real Before: title-only entries- feat(core): render PDF pages to images when text extraction overflows or fails (#6585)
- fix(session): detect and mark broken history chains instead of silently truncating (#6502)
- feat: add `qwen update` and `/update` commands with auto-update support (#5780)After: generated structure and summaries## Highlights
- Sessions now clearly mark broken history chains and prevent silent truncation (#6502)
- Workspace runtimes support session ownership indexing for cross-runtime session loading (#6540)
- Scheduled tasks can now use preconditions to control isolated run timing (#6619)
## Breaking Changes
No known breaking changes.
## Complete Change List
### Features
- PDF reading now falls back to image rendering when text extraction fails or exceeds token limits, improving handling of scanned or dense PDFs. (#6585)
- Adds 'qwen update' and '/update' commands with auto-update functionality. (#5780)
### Bug Fixes
- Sessions with broken history chains now show a clear 'history lost' marker instead of silently truncating. (#6502)The exact wording and highlight selection remain model-dependent, so maintainers should still scan that short section before publishing. The important invariant is deterministic: AI cannot add or omit pull requests, and invalid output falls back to the original title without blocking the release. |
|
Thanks for the PR! (Re-run after review fixes.) Template looks good ✓ Problem: This is a feature, not a bug fix — adds AI-assisted release note generation for stable releases. The problem is real: current release notes are flat PR title lists that are hard to scan for large releases. The author provided a concrete before/after preview from a real Direction: Aligned with the project's release automation tooling — same family as Size: Not applicable — no core module paths are touched. Files changed: Approach: The scope feels right for the release notes feature itself. However, this PR also includes Moving on to code review. 🔍 中文说明感谢贡献!(review 修复后的重新审查。) 模板完整 ✓ 问题:这是新功能而非 bug 修复——为稳定版本添加 AI 辅助 Release Notes 生成。问题是真实的:当前 Release Notes 是扁平的 PR 标题列表,大版本难以快速阅读。作者提供了 方向:与项目现有的发布自动化工具对齐,和 规模:不涉及核心模块路径。变更文件: 方案:Release Notes 功能本身范围合理。但此 PR 还包含了 进入代码审查 🔍 — Qwen Code · qwen3.7-max |
Code Review (re-run)The implementation is well-structured. Security posture is solid. Model output is treated as untrusted and validated at multiple levels: Review fixes from the last round are clean:
Changelog integration is minimal and backward-compatible.
No correctness bugs, security issues, or AGENTS.md violations found. TestingUnit Tests (61/61 passed)LintScript Help OutputReal-Scenario TestingThis PR modifies release infrastructure (GitHub Actions workflow + changelog script), not user-facing CLI behavior. There is no interactive CLI command or TUI to drive in tmux. The — Qwen Code · qwen3.7-max |
|
This is a clean, well-thought-out addition to the release tooling. The code follows the project's existing script conventions (reuses The review fixes from the last round are clean: fenced JSON stripping, Breaking Changes dedup in the Complete Change List, and 61/61 unit tests pass, lint is clean on both production and test code. The one scope note: The live dry-run against real GitHub API data still can't be verified in this CI environment (GraphQL metadata query times out at >60s), but the unit tests cover the fixture-file path thoroughly, and the author reports a successful 87-PR smoke test. Approving. The maintainer should confirm the three new secrets ( 中文说明这是一个干净、考虑周全的发布工具增强。代码遵循项目现有的脚本约定(复用 上一轮 review 的修复干净利落:fenced JSON 解析、Breaking Changes 在 Complete Change List 中的去重、 61/61 单元测试通过,生产代码和测试代码 lint 均干净。 范围备注: CI 环境中仍无法验证对真实 GitHub API 数据的 dry-run(GraphQL 查询超时),但单元测试充分覆盖了 fixture 文件路径,作者报告了 87 个 PR 的真实 smoke test 成功。 批准。维护者应在下次稳定发布前确认三个新 secret 已配置——未配置时回退到分类标题列表仍然有效。 — Qwen Code · qwen3.7-max |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
LGTM, looks ready to ship. ✅
|
@qwen-code /review |
| _Qwen Code review request accepted. Review is queued in [workflow run](https://github.com/QwenLM/qwen-code/actions/runs/29186990128)._ |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
Reviewed — no blockers. Suggestions are inline.
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
Reviewed — no blockers. Suggestions are inline.
|
本轮按最小范围处理 review:
未纳入本轮的 suggestion:raw body 传播测试、CLI fake-gh 全链路增强、 验证:
|
|
@qwen-code /triage |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
LGTM, looks ready to ship. ✅
What this PR does
This PR adds AI-assisted release notes for stable releases. GitHub-generated notes remain the authoritative pull request set; the generator enriches those pull requests with their descriptions, labels, changed paths, and diff statistics, then produces concise user-facing summaries and up to six highlights.
The model cannot add, remove, or renumber pull requests. The generator validates the complete pull request set, output length, and plain-text formatting. An invalid summary falls back independently to its original pull request title, while a generator-level failure leaves the release workflow on GitHub's existing
--generate-notespath. Nightly and preview releases are unchanged.Generated notes carry a versioned marker so the changelog generator can reuse the same content with adjusted heading levels instead of producing a second, divergent summary.
Why it's needed
Current release notes and the aggregated changelog are primarily built from commit or pull request titles. They are complete and auditable, but larger releases are difficult to scan because they do not explain user impact or identify the most important changes.
This keeps the full linked pull request list while adding a non-blocking editorial layer. AI does not participate in version calculation, pull request inclusion, or release publication decisions.
Reviewer Test Plan
How to verify
OPENAI_API_KEY,OPENAI_BASE_URL, andOPENAI_MODEL, run the generator, and confirm the result contains Highlights, Breaking Changes, and a Complete Change List.--generate-notesfallback.CHANGELOG.mdwith headings demoted below the release version heading.Local verification:
npm run lintnpm run typechecknpx vitest run scripts/tests/generate-release-notes.test.js scripts/tests/generate-changelog.test.js scripts/tests/ai-release-notes-workflow.test.js— 53/53 passedactionlint -ignore SC2129 .github/workflows/release.ymlnpm run buildv0.19.8...v0.19.9smoke test withqwen3-coder-flash: 87/87 pull requests retained in the Complete Change List and six highlights generatedEvidence (Before & After)
N/A — this changes release automation and generated Markdown, not runtime UI.
Tested on
Environment (optional)
Node.js 22, GitHub API, and an OpenAI-compatible
qwen3-coder-flashprovider.Risk & Scope
Linked Issues
N/A
中文说明
What this PR does
这个 PR 为稳定版本增加 AI 辅助的 Release Notes 生成流程。GitHub generated notes 仍然是完整 PR 集合的权威来源;生成器读取 PR 描述、labels、变更路径和 diff 统计,为每个 PR 生成简短的用户视角摘要,并从完整列表中选择最多六条 Highlights。
模型不能增加、删除或重新编号 PR。生成器会验证完整 PR 集合、输出长度和纯文本格式;单条摘要不合规时只回退该条,生成器整体失败时则让发布 workflow 继续使用 GitHub 原有的
--generate-notes路径。Nightly 和 preview 发布流程保持不变。生成后的 Release Notes 带有版本化标记,CHANGELOG 生成器会复用同一正文并调整标题层级,避免 GitHub Release 和 CHANGELOG 产生两套不同内容。
Why it's needed
当前 Release Notes 和汇总 CHANGELOG 主要由 commit 或 PR 标题组成。列表虽然完整且可审计,但较大的版本很难快速阅读,因为它们没有说明用户影响,也没有突出最重要的变化。
这次调整保留完整、带链接的 PR 列表,同时增加一个非阻塞的编辑层。AI 不参与版本计算、PR 收录或发布决策。
Reviewer Test Plan
How to verify
OPENAI_API_KEY、OPENAI_BASE_URL和OPENAI_MODEL,运行生成器并确认输出包含 Highlights、Breaking Changes 和 Complete Change List。--generate-notesfallback。CHANGELOG.md复用,并正确降低标题层级。本地验证:
npm run lintnpm run typechecknpx vitest run scripts/tests/generate-release-notes.test.js scripts/tests/generate-changelog.test.js scripts/tests/ai-release-notes-workflow.test.js— 53/53 passedactionlint -ignore SC2129 .github/workflows/release.ymlnpm run buildv0.19.8...v0.19.9数据和qwen3-coder-flash完成 smoke test:Complete Change List 保留 87/87 个 PR,并生成六条 HighlightsEvidence (Before & After)
N/A — 这是发布自动化和 Markdown 内容生成变更,不涉及运行时 UI。
Tested on
Environment (optional)
Node.js 22、GitHub API 和 OpenAI-compatible
qwen3-coder-flashprovider。Risk & Scope
Linked Issues
N/A