一键导入
prepare-release
Prepare a new release by finalizing CHANGELOG, tagging, and verifying builds. Covers everything before pushing the tag that triggers CI.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Prepare a new release by finalizing CHANGELOG, tagging, and verifying builds. Covers everything before pushing the tag that triggers CI.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Add a new device profile to podcast-tui's config.json so episodes sync to an MP3 player / DAP / USB drive with device-appropriate filenames and folder layout. Covers device research, field selection, and safe config editing.
Query the GitHub project board to find the next stack-ranked issue to work on. Returns the top actionable Todo item from the Task List view, checking issue dependencies and filtering out epics, closed issues, and blocked items.
Reorder items on the Task List project board to reflect current priorities. Supports full strategic reranks and targeted insertions. Always shows proposed order for user confirmation before executing.
Write a checkpoint file at session end so the next session can pick up exactly where you left off. Captures what was done, what's next, key decisions, and reminders.
Bootstrap a new session from a previous session's checkpoint. Reads the handoff file, confirms the project board state, and prepares to continue work.
Triage a GitHub issue by applying labels, setting project board fields, linking to epics, and identifying blockers.
| name | prepare-release |
| description | Prepare a new release by finalizing CHANGELOG, tagging, and verifying builds. Covers everything before pushing the tag that triggers CI. |
When [Unreleased] in CHANGELOG.md has accumulated features/fixes and you're ready to cut a new version.
maincargo test and cargo clippy -- -D warnings pass on mainCheck the current version in Cargo.toml and the latest git tag:
# Windows
Select-String '^version = ' Cargo.toml
git --no-pager tag --sort=-v:refname | Select-Object -First 5
Also check the GitHub Releases page (https://github.com/lqdev/podcast-tui/releases) to confirm the latest published release — the Cargo.toml version may lag behind due to the post-release workflow.
Increment based on changes in [Unreleased]:
Convert [Unreleased] into a versioned release section with today's date:
## [Unreleased]
---
## [X.Y.Z] - YYYY-MM-DD
### Fixed
<content from [Unreleased] Fixed sections>
### Added
<content from [Unreleased] Added sections>
Rules:
## [Unreleased] section at the top (above the new versioned section)--- separator between the new section and the previous versioned entry[Unreleased] to [X.Y.Z]Fixed sections conventionally come before Added within a release entry[Unreleased] heading (e.g. - Playlist Enhancements (post-v1.6.0) → just ## [Unreleased])Edit the version = "..." line in Cargo.toml to the new version (top-level [package] only):
version = "X.Y.Z"
Note: The
post-release-version-sync.ymlworkflow also updates this after publishing, but setting it locally ensurescargo build --versionoutput is correct for verification.
Then sync Cargo.lock so its podcast-tui entry matches (the lockfile is tracked in git and must never drift from Cargo.toml):
cargo update -p podcast-tui --precise X.Y.Z
Why this matters:
release.ymlkeys its build cache onhashFiles('**/Cargo.lock'). If the lockfile version never changes, the cache key is identical across releases and a stale cross-versiontarget/can be served, embedding the wrongCARGO_PKG_VERSIONinto the binary. Always commit the updatedCargo.lockalongsideCargo.toml.
cargo fmt --check
cargo clippy -- -D warnings
cargo test
All three must pass cleanly before tagging. The test_opml_local_file integration test has a pre-existing failure (missing local fixture file) — this is expected and can be ignored.
cargo build --releaseis optional on Windows since CI runs the official release builds. Run it if you want extra confidence (it takes ~5 minutes).
git add Cargo.toml Cargo.lock CHANGELOG.md
git commit -m "chore: prepare release vX.Y.Z
- Finalize CHANGELOG.md for vX.Y.Z
- Update Cargo.toml and Cargo.lock version to X.Y.Z
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>"
git tag vX.Y.Z
git push origin main
git push origin vX.Y.Z
Pushing the tag triggers the release.yml workflow which:
After pushing the tag:
gh run list --workflow release.yml --limit 3
After CI completes (~10 minutes):
The post-release-version-sync.yml workflow triggers automatically when the GitHub Release is published (triggered by release: types: [published], not by the tag push directly). It:
Cargo.toml version on main (no-op if you already set it in step 3)Cargo.lock's podcast-tui entry to match (no-op if already in sync)manifests/l/lqdev/PodcastTUI/<version>/mainMonitor it:
gh run list --workflow post-release-version-sync.yml --limit 3
After it completes:
git pull origin main # pick up the post-release commit
Verify:
Cargo.toml on main has the new versionmanifests/l/lqdev/PodcastTUI/<version>/ directory existsgit push origin vX.Y.Z
└─► release.yml (tag push: v*)
└─► builds binaries + creates GitHub Release (published)
└─► post-release-version-sync.yml (release: published)
└─► updates Cargo.toml + Cargo.lock + generates winget manifests
release.yml uses softprops/action-gh-release with auto-generated notescargo clippy -- -D warnings — it's required to pass before taggingTags use clean semver with v prefix: v1.6.0, v1.7.0, v1.8.0, v1.9.0, etc.
Artifact naming follows: podcast-tui-v{VERSION}-{os}-{arch}.{ext}
podcast-tui-v1.9.0-linux-x86_64.tar.gzpodcast-tui-v1.9.0-linux-aarch64.tar.gzpodcast-tui-v1.9.0-windows-x86_64.zippodcast-tui-v1.9.0-windows-aarch64.zip