- Bump vendor/MeshCore pin 910b1bee -> bbb58cce (upstream v1.16.0,
272 commits) and rebase the 14-patch bot queue onto it; one trivial
conflict in the MyMesh constructor.
- New patch 15: sig/air/coin commands plus registry-derived help and
cmd listings ('cmd diag' for the diagnostic set). BOT_PREFS_VERSION
bumped to 7. Host tests cover the new commands and assert every
discoverable registry entry appears in a listing.
- Re-include six boards fixed upstream (Pico W, RAK 11310, Waveshare
RP2040 LoRa, Xiao RP2040, Nibble USB+BLE) after local test builds;
remaining exclusions are BLE flash-size only.
- Fix release env enumeration to strip CR line endings so envs in CRLF
variant files (Minewsemi ME25LS01, Wio WM1110, Nibble) are counted
and built; verified all three build locally.
- Refresh README/CHANGELOG/RELEASE/CONTRIBUTING for the new base and
command set.
Verified: host tests, safety checks, 4 representative builds, and 9
additional env builds all pass; the 15-patch queue applies cleanly to
pristine bbb58cce.
2.7 KiB
Cutting a release
Releases are produced by pushing a cmesh-bot-vX.Y.Z tag. The
.github/workflows/release.yml workflow then:
- Builds every companion USB+BLE environment exposed by the pinned
MeshCore submodule, minus the exclusion list in
scripts/list-release-companion-envs.sh(139 boards at the current pin). - Splits the build across 8 parallel matrix shards for wall-time.
- Embeds the tag version (
vX.Y.Z) into the firmware viaFIRMWARE_VERSION. - Uploads each shard's artifacts.
- Aggregates everything into a single GitHub Release in draft state, ready for you to add release notes and publish.
Prerequisites
- All PRs for the release are merged to
main. - CI on
mainis green (host tests + representative builds). - You've updated
CHANGELOG.mdwith notes for the new version. - Your local branch is up to date with
origin/main.
Steps
git checkout main
git pull origin main
# Bump CHANGELOG.md, commit, push.
$EDITOR CHANGELOG.md
git commit -am "docs: prep cmesh-bot-vX.Y.Z release notes"
git push origin main
# Tag and push.
git tag -a cmesh-bot-vX.Y.Z -m "Colorado Mesh Bot Firmware vX.Y.Z"
git push origin cmesh-bot-vX.Y.Z
The release.yml workflow will start automatically. Track progress at
https://github.com/Colorado-Mesh/meshcore-bot-firmware/actions.
When the workflow finishes, a draft release will appear at https://github.com/Colorado-Mesh/meshcore-bot-firmware/releases. Review it, paste in the CHANGELOG entry as the description, and publish.
Tag scheme
cmesh-bot-vX.Y.Z: production release.cmesh-bot-vX.Y.Z-rc.N: release candidate (still publishes as draft).cmesh-bot-vX.Y.Z-alpha.N/-beta.N: pre-release, mark as pre-release when publishing.
The leading cmesh-bot- namespace leaves room for future variants
(repeater, room-server) without colliding.
Versioning
Semantic-ish: bump major for breaking pref/protocol changes, minor for
new commands or boards, patch for fixes. Bump BOT_PREFS_VERSION in
vendor/MeshCore/examples/companion_radio/BotTypes.h whenever an
existing pref field's meaning or default changes. That forces deployed
bots to reset prefs on first boot.
Hotfix / unpublish
If a published release turns out to be broken:
- Mark it as a pre-release (don't delete it; flashed devices may still reference the URL).
- Tag and publish
cmesh-bot-vX.Y.(Z+1)immediately. - Edit the broken release's notes to point at the fix.
If you tagged the wrong commit and the workflow hasn't finished:
git tag -d cmesh-bot-vX.Y.Z
git push --delete origin cmesh-bot-vX.Y.Z
# fix, re-tag, re-push
Avoid deleting tags after the workflow has published artifacts, since users may have already downloaded them.