Skip to content

Releases: OffbandMesh/meshcore-firmware

Offband offband-v0.17.0

14 Jun 07:31

Choose a tag to compare

First release under OffbandMesh/meshcore-firmware. Bundles the 0.16.0 observer
work below (which landed on firmware-base but was never separately tagged) with
the Crosswire→Offband rebrand and the OffbandMesh org cutover. (Version pending
owner confirmation; the tag is hardware-gated per VERSIONING.md.)

Changed

  • Rebranded the fork from Crosswire to Offband (GitHub org OffbandMesh):
    the C++ namespace, build macros, embedded identity blob, version prefix
    (offband-v*), MQTT / flash-audit identity fields (offband_*), brand
    strings (serial banner, version command, OLED splash, Home Assistant
    manufacturer), and the WiFi setup-AP SSID (Offband-Observer-). Historical
    crosswire-v* release tags are preserved; the _sys PSK domain separator
    and the MeshCore interop topic namespace are intentionally unchanged. (#100)
  • Repo / board / working-dir cutover to OffbandMesh — repo
    OffbandMesh/meshcore-firmware, OffbandMesh org Projects board, and the
    preflight / CLAUDE.md / label-sync workflow re-pointed; removed the stale
    upstream CNAME. (#107, #111)

Docs

  • Finished the rebrand reference cleanup across docs + code comments. (#113, #114)
  • Release-readiness pass: README getting-started + multi-role positioning, the
    docs index surfaces the observer guides, and observer _sys CLI reference
    corrections. (#117)

What's Changed

  • feat: observer MQTT connectivity (crosswire-v0.15.0) — #53 #48 #63 #68 by @Strycher in #72
  • docs: fix README license link (LICENSE.txt -> license.txt) — #73 by @Strycher in #74
  • docs: 2026-06-10 observer-MQTT session handoff — #75 by @Strycher in #76
  • chore: relocate to C:/Dev/Crosswire — canonical hook sync + AM repin by @Strycher in #78
  • docs(#79): correct stale active-agents line in CLAUDE.md by @Strycher in #80
  • Observer: time arbiter (#69) + position in /status (#31) + _sys CLI grammar (#45) by @Strycher in #91
  • Observer follow-ups: arbiter decouple + held-state (#87) + /status radio from runtime prefs (#88) by @Strycher in #92
  • docs: README/CHANGELOG 0.16.0 (#93) + observer instructions (#94) by @Strycher in #99
  • #95: observer MQTT broker pre-config + per-device auth by @Strycher in #105
  • #98: mqtt view + mqtt clear (broker config inspection) by @Strycher in #106
  • Offband rebrand: Crosswire -> Offband (code + docs) by @Strycher in #108
  • chore(#107): finish OffbandMesh local cutover (preflight, CLAUDE.md, board #1) by @Strycher in #109
  • chore(#111): remove stale upstream CNAME (docs.meshcore.nz) by @Strycher in #112
  • docs(#113): finish rebrand — Strycher/Crosswire refs + CLAUDE.md PROJECT_PAT note by @Strycher in #115
  • chore(#114): update stale Strycher/Crosswire# refs in code comments -> #N by @Strycher in #116
  • epic(#117): Offband release-readiness — docs, observer reference, CHANGELOG prep by @Strycher in #125

Full Changelog: crosswire-v0.14.0...offband-v0.17.0

Offband offband-v0.17.0-rc1

14 Jun 07:15

Choose a tag to compare

Pre-release

(No CHANGELOG entry for v0.17.0-rc1.)

What's Changed

  • feat: observer MQTT connectivity (crosswire-v0.15.0) — #53 #48 #63 #68 by @Strycher in #72
  • docs: fix README license link (LICENSE.txt -> license.txt) — #73 by @Strycher in #74
  • docs: 2026-06-10 observer-MQTT session handoff — #75 by @Strycher in #76
  • chore: relocate to C:/Dev/Crosswire — canonical hook sync + AM repin by @Strycher in #78
  • docs(#79): correct stale active-agents line in CLAUDE.md by @Strycher in #80
  • Observer: time arbiter (#69) + position in /status (#31) + _sys CLI grammar (#45) by @Strycher in #91
  • Observer follow-ups: arbiter decouple + held-state (#87) + /status radio from runtime prefs (#88) by @Strycher in #92
  • docs: README/CHANGELOG 0.16.0 (#93) + observer instructions (#94) by @Strycher in #99
  • #95: observer MQTT broker pre-config + per-device auth by @Strycher in #105
  • #98: mqtt view + mqtt clear (broker config inspection) by @Strycher in #106
  • Offband rebrand: Crosswire -> Offband (code + docs) by @Strycher in #108
  • chore(#107): finish OffbandMesh local cutover (preflight, CLAUDE.md, board #1) by @Strycher in #109
  • chore(#111): remove stale upstream CNAME (docs.meshcore.nz) by @Strycher in #112
  • docs(#113): finish rebrand — Strycher/Crosswire refs + CLAUDE.md PROJECT_PAT note by @Strycher in #115
  • chore(#114): update stale Strycher/Crosswire# refs in code comments -> #N by @Strycher in #116
  • epic(#117): Offband release-readiness — docs, observer reference, CHANGELOG prep by @Strycher in #125

Full Changelog: crosswire-v0.14.0...offband-v0.17.0-rc1

Crosswire crosswire-v0.15.0

10 Jun 23:43

Choose a tag to compare

Observer MQTT connectivity -- hardware-validated against three brokers
(CoreScope / W8OOF tcp-anon, eastme.sh wss/jwt, LetsMesh-US wss/jwt).

Added

  • Owner broker registry: seed the default 6-slot broker set with an iata=HAO
    default; per-broker GTS Root R4 + ISRG Root X2 CA certificates added and
    mapped, registry cert-names corrected. (#48)
  • Per-broker JWT identity claims jwt_owner / jwt_email
    (set mqtt.broker.<N>.jwt_owner|jwt_email), surfaced in mqtt status. (#63)
  • Multi-frame mqtt status over the BLE _sys channel: the per-slot broker
    table spans multiple frames instead of truncating. (#48)

Fixed

  • BLE _sys command channel no longer hangs when set mqtt.broker.* runs. The
    blocking esp_mqtt lifecycle ops (connect / destroy) moved off loopTask to a
    dedicated mqtt_worker task with a per-broker lock and a per-slot reconcile
    flag. (#53)
  • wss/JWT broker authentication: send the MQTT CONNECT username
    v1_<UPPERCASE pubkey> (was a null username) so eastme.sh / LetsMesh accept
    the connection -- the broker verifies the token's publicKey claim against it
    and rejects a null username (CONNACK rc=5) even with an otherwise-valid token.
    (#68)

What's Changed

  • fix(#27): pio-flash firmware_dir -> repo root + --firmware-dir override by @Strycher in #28
  • pio-flash artifact-flash: flash CI release artifacts through the identity gate (#29, #34) by @Strycher in #35
  • fix(#33): OLED splash carries pre-release identifier (v0.14.0-rc1, not v0.14.0+0) by @Strycher in #37
  • chore(#38): gitignore pycache/ by @Strycher in #40
  • feat(#42): strip observer companion to minima + delete dead ring buffer by @Strycher in #50
  • docs: pin Crosswire project identity (Citadel + Agent Mail keys) (#55) by @Strycher in #56
  • docs(#32): position-to-map pipeline architecture draft by @Strycher in #57
  • docs: MeshCore 1.16.0 base-update impact assessment (spike #54) by @Strycher in #58
  • chore(#59): port /work + session-state.py compaction-recovery hook into Crosswire by @Strycher in #60
  • docs(#61): correct CLAUDE.md build/flash + migration-status after meshcore-firmware retire by @Strycher in #62
  • feat: observer MQTT connectivity (crosswire-v0.15.0) — #53 #48 #63 #68 by @Strycher in #72

Full Changelog: crosswire-v0.14.0-rc1...crosswire-v0.15.0

Crosswire crosswire-v0.14.0

10 Jun 23:45

Choose a tag to compare

Added

  • CI release pipeline (epic #14): dev-channel firmware artifacts on every
    firmware-base push / PR (ci.yml), and a release.yml workflow that builds
    the curated community board set from crosswire-v* tags and publishes a
    GitHub Release (pre-release for -rc*, "Latest" for stable). Curated env set
    in .github/release-envs.txt (72 envs; heltec_v4_repeater_telemetry gated on
    #20). Design of record: docs/architecture/2026-06-06-ci-release-pipeline.md.
    (#15, #16, #17)

Changed

  • Reconciled inherited CI workflows: removed 7 dead/superseded
    (pr-build-check, auto-promote, github-pages, the three upstream-tag
    build-*-firmwares, branch-cleanup); kept build-safeboot-firmwares +
    sync-labels-to-board. (#18)

What's Changed

  • fix(#27): pio-flash firmware_dir -> repo root + --firmware-dir override by @Strycher in #28
  • pio-flash artifact-flash: flash CI release artifacts through the identity gate (#29, #34) by @Strycher in #35
  • fix(#33): OLED splash carries pre-release identifier (v0.14.0-rc1, not v0.14.0+0) by @Strycher in #37
  • chore(#38): gitignore pycache/ by @Strycher in #40
  • feat(#42): strip observer companion to minima + delete dead ring buffer by @Strycher in #50
  • docs: pin Crosswire project identity (Citadel + Agent Mail keys) (#55) by @Strycher in #56
  • docs(#32): position-to-map pipeline architecture draft by @Strycher in #57
  • docs: MeshCore 1.16.0 base-update impact assessment (spike #54) by @Strycher in #58
  • chore(#59): port /work + session-state.py compaction-recovery hook into Crosswire by @Strycher in #60
  • docs(#61): correct CLAUDE.md build/flash + migration-status after meshcore-firmware retire by @Strycher in #62

Full Changelog: crosswire-v0.14.0-rc1...crosswire-v0.14.0

Crosswire crosswire-v0.14.0-rc1

07 Jun 21:22

Choose a tag to compare

Pre-release

(No CHANGELOG entry for v0.14.0-rc1.)

What's Changed

  • docs: adopt versioning + CHANGELOG + release-channel discipline (#11) by @Strycher in #12
  • chore: roll CHANGELOG to v0.13.2 + fix em-dashes to ASCII (#11) by @Strycher in #13
  • epic(#14): CI release pipeline -- dev artifacts + crosswire-v* releases by @Strycher in #24
  • docs(#25): roll CHANGELOG to [0.14.0] (CI release pipeline) by @Strycher in #26

New Contributors

Full Changelog: https://github.com/Strycher/Crosswire/commits/crosswire-v0.14.0-rc1