Files
Tunglies f77f60ecd5 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.
2026-09-10 08:09:54 +08:00

157 lines
3.6 KiB
TOML

[config]
skip_core_tasks = true
skip_git_env_info = true
skip_rust_env_info = true
skip_crate_env_info = true
# --- Backend ---
[tasks.rust-format]
description = "Run rustfmt on Rust code"
install_crate = "rustfmt"
command = "cargo"
args = ["fmt", "--", "--emit=files"]
[tasks.rust-clippy]
description = "Run cargo clippy to lint the code"
command = "cargo"
args = ["clippy", "--all-targets", "--all-features", "--", "-D", "warnings"]
# --- Frontend ---
[tasks.typecheck]
description = "Run type checks"
command = "pnpm"
args = ["typecheck"]
[tasks.typecheck.windows]
command = "cmd.exe"
args = ["/d", "/c", "pnpm", "typecheck"]
[tasks.knip-report]
description = "Report unused frontend code and dependencies"
command = "pnpm"
args = ["knip:report"]
[tasks.knip-report.windows]
command = "cmd.exe"
args = ["/d", "/c", "pnpm", "knip:report"]
[tasks.knip-check]
description = "Fail on unused frontend code and dependencies"
command = "pnpm"
args = ["knip:check"]
[tasks.knip-check.windows]
command = "cmd.exe"
args = ["/d", "/c", "pnpm", "knip:check"]
[tasks.lint-staged]
description = "Run lint-staged for staged files"
command = "pnpm"
args = ["exec", "lint-staged"]
[tasks.lint-staged.windows]
command = "cmd.exe"
args = ["/d", "/c", "pnpm", "exec", "lint-staged"]
[tasks.i18n-format]
description = "Format i18n keys"
command = "pnpm"
args = ["i18n:format"]
[tasks.i18n-format.windows]
command = "cmd.exe"
args = ["/d", "/c", "pnpm", "i18n:format"]
[tasks.i18n-types]
description = "Generate i18n key types"
command = "pnpm"
args = ["i18n:types"]
[tasks.i18n-types.windows]
command = "cmd.exe"
args = ["/d", "/c", "pnpm", "i18n:types"]
[tasks.git-add]
description = "Add generated files back to git index"
command = "git"
args = [
"add",
"src/locales",
"crates/clash-verge-i18n/locales",
"src/types/generated",
]
# --- Jobs ---
[tasks.frontend-format]
description = "Frontend format checks"
script_runner = "@duckscript"
script = '''
# i18n related changes
has_i18n = exec git diff --cached --quiet -- src/locales crates/clash-verge-i18n/locales
if eq ${has_i18n.code} 1
cm_run_task i18n-format
cm_run_task i18n-types
cm_run_task git-add
end
# frontend related changes
has_frontend = exec git diff --cached --quiet -- "*.js" "*.jsx" "*.ts" "*.tsx" "*.json" "*.css" "*.scss" "*.html"
if eq ${has_frontend.code} 1
cm_run_task lint-staged
end
'''
# --- Git Hooks ---
[tasks.pre-commit]
description = "Pre-commit checks: format only"
script_runner = "@duckscript"
script = '''
# rust related changes
has_rust = exec git diff --cached --quiet -- "*.rs" Cargo.toml Cargo.lock
if eq ${has_rust.code} 1
cm_run_task rust-format
end
# frontend checks
cm_run_task frontend-format
# changelog platform grouping
has_changelog = exec git diff --cached --quiet -- Changelog.md
if eq ${has_changelog.code} 1
grouped = exec bash scripts-workflow/group_platforms.sh
if not eq ${grouped.code} 0
echo "Changelog platform grouping failed"
exit 1
end
exec git add Changelog.md
end
'''
[tasks.pre-push]
description = "Pre-push checks: lint, typecheck, and unused files"
script_runner = "@duckscript"
script = '''
has_upstream = exec git rev-parse --abbrev-ref --symbolic-full-name @{u}
if not eq ${has_upstream.code} 0
echo "No upstream found, skipping diff-based checks"
exit 0
end
# rust related changes
has_rust = exec git diff @{u}..HEAD --quiet -- "*.rs" Cargo.toml Cargo.lock
if eq ${has_rust.code} 1
cm_run_task rust-clippy
end
# frontend related changes
has_frontend = exec git diff @{u}..HEAD --quiet -- "*.js" "*.jsx" "*.ts" "*.tsx" "*.json" "*.css" "*.scss" "*.html"
if eq ${has_frontend.code} 1
cm_run_task typecheck
cm_run_task knip-check
end
'''