From f279b4170e2c58d623cc9a1a83a177c2bdfb5eb3 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Tue, 7 Apr 2026 18:48:40 +0300 Subject: fix: tighten release manifest sync flow --- AGENTS.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'AGENTS.md') diff --git a/AGENTS.md b/AGENTS.md index df94c1b2..7ae8b983 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -39,6 +39,34 @@ Default release flow: ```bash just check just release 0.x.y +# wait for the GitHub release and all four binary assets to exist +just update-latest-json 0.x.y ``` `just release 0.x.y` prepares the changelog entry, bumps `Cargo.toml`, runs tests, commits, tags, and pushes. GitHub Actions builds the binaries after the tag is pushed. + +`just update-latest-json 0.x.y` is the post-release website step. It uses `gh release view` against `ogulcancelik/herdr`, verifies the published release exists, rejects draft or prerelease releases, requires a non-empty release body, requires these four assets to exist, and only then rewrites `website/latest.json`: + +- `herdr-linux-x86_64` +- `herdr-linux-aarch64` +- `herdr-macos-x86_64` +- `herdr-macos-aarch64` + +It also refuses to run if `website/latest.json` is already at the same or newer version. It leaves the file unstaged and prints the next commands to review, commit, and push. + +`website/latest.json` is the shipped updater source of truth. Keep its schema aligned with `src/update.rs`: + +```json +{ + "version": "0.x.y", + "notes": "### ...", + "assets": { + "linux-x86_64": "...", + "linux-aarch64": "...", + "macos-x86_64": "...", + "macos-aarch64": "..." + } +} +``` + +The app update check and the in-app **What's New** flow both depend on that exact manifest shape. -- cgit v1.2.3