docs(changelog): distill release notes and add platform grouping

The v2.5.4 notes had grown to 97 free-form entries exposed verbatim in
the in-app update dialog. Distill them to 58 one-theme-per-line entries
capped at ~60 CJK characters with no internal terminology, and move the
writing rules into template/Changelog.md so every cycle starts from them.

Release plumbing now agrees on the --- divider: extract_update_logs.sh
stops there like updatelog.mjs, so file-only content never reaches
release bodies, while updater.mjs appends a per-tag See More link to the
update notes it generates. scripts-workflow/group_platforms.sh locks
platform entries under emoji platform headings, wired into pre-commit,
release and autobuild CI, and the changelog bump script; AGENTS.md points
agents at the template rules.
This commit is contained in:
Tunglies
2026-09-10 08:09:54 +08:00
parent 8812923eda
commit f77f60ecd5
10 changed files with 246 additions and 94 deletions
+6 -1
View File
@@ -13,12 +13,17 @@ if [[ ! -f "$CHANGELOG_FILE" ]]; then
exit 1
fi
# 提取从第一个 '## v' 开始到下一个 '## v' 前的内容
# 提取从第一个 '## v' 开始到 '---' 或下一个 '## v' 前的内容
# '---' 与 scripts/updatelog.mjs 的解析一致:分隔线之后的内容
# 只属于仓库文件,不进入任何 release body
UPDATE_LOGS=$(awk '
/^## v/ {
if (found) exit;
found=1
}
/^---/ && found {
exit
}
found
' "$CHANGELOG_FILE")
+6 -3
View File
@@ -72,11 +72,14 @@ async function processRelease(github, options, tag, isAlpha) {
tag: tag.name,
})
const notes = await resolveUpdateLog(tag.name).catch(() =>
resolveUpdateLogDefault().catch(() => 'No changelog available'),
)
const releaseUrl = `https://github.com/${options.owner}/${options.repo}/releases/tag/${tag.name}`
const updateData = {
name: tag.name,
notes: await resolveUpdateLog(tag.name).catch(() =>
resolveUpdateLogDefault().catch(() => 'No changelog available'),
),
notes: `${notes}\n\n**[See More](${releaseUrl})**`,
pub_date: new Date().toISOString(),
platforms: {
// platform format: