Files
koring-launcher/scripts/release-notes.ps1
T
dream_pep 4d3e43394c feat(auto-update): 实现全流程自动更新功能与配套界面
- 新增主进程更新服务,支持GitHub官方源与加速源兜底的检查、下载、安装全流程
- 新增独立更新日志页面,支持查看更新说明与更新全流程管理
- 实现更新状态持久化,重启应用可恢复上次未完成的下载进度
- 完善版本管理与构建元数据脚本,优化CI发布流水线
- 补充VersionCard的构建信息展示与更新页跳转逻辑
- 新增更新相关IPC接口、类型定义与全局状态管理
- 清理旧的无用配置项,升级相关依赖包
2026-08-30 20:19:15 +08:00

81 lines
2.5 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Koring Launcher 中文 Release 发布说明生成器
#
# 用法(GitHub Actions 中调用):
# ./scripts/release-notes.ps1 -BaseVersion "1.2.0" -FullVersion "1.2.0-2608280224" -Mode "beta" -OutputPath release-notes.md
#
# 输出(MarkdownUTF-8):
# # Koring Launcher Releases {BaseVersion}
# ## 版本信息
# 当前版本 {FullVersion}
# 编译状态:BETA / RUN
# ## 更新了什么内容
# <details><summary>·Commit 1cf906d</summary>提交说明…</details>(默认折叠)
param(
[Parameter(Mandatory = $true)][string] $BaseVersion,
[Parameter(Mandatory = $true)][string] $FullVersion,
[Parameter(Mandatory = $true)][string] $Mode,
[string] $SigningStatus = "已签名",
[string] $Commit = "",
[string] $OutputPath = "release-notes.md"
)
$status = if ($Mode -eq 'beta') { 'BETA' } else { 'RUN' }
$commitShort = if ($Commit) { $Commit.Substring(0, [Math]::Min(7, $Commit.Length)) } else { '' }
$rec = [char]0x1e # 记录分隔符(每个 commit 一条)
$sep = [char]0x1f # 字段分隔符(hash / subject / body
$format = "%x1f%H%x1f%s%x1f%b%x1e"
# 自上个 release tag(v*)以来的提交;无 tag 则取全部提交
$lastTag = git tag --sort=-version:refname 2>$null | Where-Object { $_ -match '^v' } | Select-Object -First 1
if ($lastTag) {
Write-Host "Commits since tag: $lastTag"
$raw = git log --format=$format "$lastTag..HEAD"
} else {
Write-Host "No release tags found, listing all commits"
$raw = git log --format=$format "HEAD"
}
$blocks = @()
foreach ($record in ($raw -split [regex]::Escape($rec))) {
if (-not $record) { continue }
$parts = $record -split [regex]::Escape($sep)
if ($parts.Length -lt 4) { continue }
$hash = $parts[1].Trim()
$subject = $parts[2].Trim()
$body = $parts[3].Trim()
if (-not $hash) { continue }
$short = $hash.Substring(0, [Math]::Min(7, $hash.Length))
$inner = $subject
if ($body) { $inner += "`n`n$body" }
$blocks += @"
<details>
<summary>·Commit $short</summary>
$inner
</details>
"@
}
$commitsSection = if ($blocks.Count -gt 0) { $blocks -join "`n`n" } else { '· 无提交记录' }
$content = @"
# Koring Launcher Releases $BaseVersion
## 版本信息
当前版本 $FullVersion
编译状态:$status
签名状态:$SigningStatus
$(if ($commitShort) { "构建来源:commit $commitShort" })
## 更新了什么内容
$commitsSection
"@
[System.IO.File]::WriteAllText($OutputPath, $content, [System.Text.UTF8Encoding]::new($false))
Write-Host "Release notes written to $OutputPath ($($blocks.Count) commits)"