Releasing
This project follows a lightweight Git Flow convention:
main— stable, released code. The GitHub Pages docs site is built from here, and the release tag-triggered workflow publishes from it.develop— the default integration branch (origin/HEAD). All work lands here.- Feature / fix / release branches — short-lived; merged into
developvia a pull request, then deleted promptly. The repository auto-deletes head branches on merge (delete_branch_on_merge).
Branch rules
- Always branch from the latest
developand open a PR back todevelop. - CI (build + test) must pass before merging.
- After a PR merges, its head branch is deleted automatically — do not leave stale branches around. Merge what is ready, delete what is merged.
mainonly ever moves by syncing fromdevelop(a release sync PR). Never commit feature work directly tomain.
Release process
- Sync check.
mainanddevelopmust point at the same commit before tagging. Runscripts/check-release-sync.ps1, or rely on theReleaseworkflow, which refuses to run when they differ. - Version bump + changelog on
develop: bump theCargo.tomlworkspace version,web/package.json,npm/package.json,npm-cli/package.jsonand the platform sub-packages; add aCHANGELOG.mdentry; update pinned-version docs and the README Release badge (?branch=vX.Y.Z). - Sync
develop→mainwith a PR (merge, then the head branch is auto-deleted). - Tag
vX.Y.Zondevelopand push it. TheReleaseworkflow:- first verifies
main == develop(fails otherwise), - builds the web UI and release binaries for every platform,
- creates the GitHub Release with the binaries,
- publishes the
cmsis-dap-mcpandcmsis-dap-clinpm meta packages plus the 16 platform packages.
- first verifies
Checklist
Run the pre-release check:
scripts/check-release-sync.ps1
It fetches, verifies a clean tree, confirms main == develop, and lists any
merged remote branches that should be deleted.