{
  "id": "eastmesh",
  "name": "EastMesh",
  "type": "fork",
  "maintainer": "xJARiD",
  "description": "EastMesh firmware builds for MeshCore, with MQTT repeaters, WiFi companions, and simple release downloads for supported boards. Features an optional local HTTPS config panel on supported ESP32 targets, JWT auth using device identity, and battery reporting.\n",
  "repository": "https://github.com/xJARiD/MeshCore-EastMesh",
  "license": "MIT",
  "status": "active",
  "lifecycle": "active",
  "maturity": "beta",
  "distribution": "community",
  "lineage": {
    "kind": "fork",
    "upstreamFirmwareId": "meshcore-official",
    "upstreamRepository": "https://github.com/meshcore-dev/MeshCore"
  },
  "runtime": {
    "framework": "arduino",
    "language": "cpp"
  },
  "roles": [
    "companion",
    "repeater",
    "observer"
  ],
  "features": [
    "MQTT repeater builds",
    "WiFi companion builds",
    "Optional local HTTPS config panel (ESP32)",
    "JWT auth using device identity",
    "Battery reporting on supported targets",
    "Observer role support"
  ],
  "capabilities": {
    "protocol": {
      "meshcoreCompatible": true
    },
    "transports": {
      "ble": true,
      "usbSerial": true,
      "nativeTcp": true,
      "wifiAp": true
    },
    "operations": {
      "ota": true,
      "webFlasher": false
    },
    "networking": {
      "repeater": true,
      "roomServer": false,
      "observer": true,
      "mqtt": true,
      "kissModem": false
    },
    "hardware": {
      "gps": true,
      "display": true,
      "sensors": false,
      "lowPowerRx": false
    }
  },
  "devices": [
    {
      "id": "heltec-v4",
      "status": "supported"
    }
  ],
  "popularity": {
    "githubStars": 18,
    "githubForks": 6,
    "githubWatchers": 2,
    "githubOpenIssues": 0,
    "githubContributors": 172,
    "releaseDownloads": 3317,
    "latestReleaseDownloads": 108,
    "lastChecked": "2026-06-21"
  },
  "verification": {
    "sourceAvailable": true,
    "releasesAvailable": true,
    "ciBuilds": true,
    "lastChecked": "2026-06-21"
  },
  "source": {
    "path": "data/firmwares/eastmesh/firmware.yaml",
    "updatedAt": "2026-06-22T21:31:07+02:00"
  },
  "latest_version": "2026.6.3",
  "released": "2026-06-09",
  "releases": [
    {
      "version": "observer-eastmesh-v2026.6.3",
      "name": "Observer EastMesh Firmware v1.16.0-eastmesh-v2026.6.3",
      "datetime": "2026-06-09T10:19:45Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-v2026.6.3",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer\r\n\r\nEastMesh `observer-eastmesh` firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware `v1.16.0`.\r\n\r\nThis release adds secure WebSocket transport support for custom MQTT brokers from the Observer web panel and CLI.\r\n\r\n### What's Changed\r\n\r\n- Added TCP/WSS transport selection for custom MQTT brokers.\r\n- Added web-panel Custom MQTT transport control for switching between TCP and WSS.\r\n- Added CLI support for viewing and setting the custom MQTT transport.\r\n- Kept custom MQTT authentication to username and password only; no JWT/web auth is used for custom brokers.\r\n- Verified custom MQTT WSS connections with the ESP-IDF x509 root CA bundle.\r\n- Fixed custom MQTT WSS to use the `/mqtt` WebSocket path.\r\n- Configured custom MQTT WSS using a full `wss://host:port/mqtt` URI so ESP-MQTT handles the WebSocket connection consistently.\r\n- Updated `get mqtt.status` to show the custom MQTT transport and state, for example `custom:wss:up`.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Notes\r\n\r\n- `eastmesh-au` remains the recommended MQTT endpoint once `mqtt.iata` is configured.\r\n- Custom MQTT is available for private broker deployments.\r\n- For TCP custom MQTT, use the broker host and port as before.\r\n- For WSS custom MQTT, set the host and port, select WSS transport, and the firmware will connect using `wss://host:port/mqtt`.\r\n- WSS uses TLS encryption and validates against the ESP-IDF x509 root CA bundle.\r\n- For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with `set web off`.\r\n- Browsers may still require accepting the self-signed certificate warning on first HTTPS access.\r\n- `flood.max.unscoped` defaults to `64`; lower it only if you want to limit how far unscoped flood traffic repeats.\r\n- `flood.max.advert` controls the hop limit for flooded advert packets.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer</h2>\n<p>EastMesh <code>observer-eastmesh</code> firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware <code>v1.16.0</code>.</p>\n<p>This release adds secure WebSocket transport support for custom MQTT brokers from the Observer web panel and CLI.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Added TCP/WSS transport selection for custom MQTT brokers.</li>\n<li>Added web-panel Custom MQTT transport control for switching between TCP and WSS.</li>\n<li>Added CLI support for viewing and setting the custom MQTT transport.</li>\n<li>Kept custom MQTT authentication to username and password only; no JWT/web auth is used for custom brokers.</li>\n<li>Verified custom MQTT WSS connections with the ESP-IDF x509 root CA bundle.</li>\n<li>Fixed custom MQTT WSS to use the <code>/mqtt</code> WebSocket path.</li>\n<li>Configured custom MQTT WSS using a full <code>wss://host:port/mqtt</code> URI so ESP-MQTT handles the WebSocket connection consistently.</li>\n<li>Updated <code>get mqtt.status</code> to show the custom MQTT transport and state, for example <code>custom:wss:up</code>.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Notes</h3>\n<ul>\n<li><code>eastmesh-au</code> remains the recommended MQTT endpoint once <code>mqtt.iata</code> is configured.</li>\n<li>Custom MQTT is available for private broker deployments.</li>\n<li>For TCP custom MQTT, use the broker host and port as before.</li>\n<li>For WSS custom MQTT, set the host and port, select WSS transport, and the firmware will connect using <code>wss://host:port/mqtt</code>.</li>\n<li>WSS uses TLS encryption and validates against the ESP-IDF x509 root CA bundle.</li>\n<li>For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with <code>set web off</code>.</li>\n<li>Browsers may still require accepting the self-signed certificate warning on first HTTPS access.</li>\n<li><code>flood.max.unscoped</code> defaults to <code>64</code>; lower it only if you want to limit how far unscoped flood traffic repeats.</li>\n<li><code>flood.max.advert</code> controls the hop limit for flooded advert packets.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "observer-eastmesh-bridge-espnow-v2026.6.3",
      "name": "Observer EastMesh Firmware with ESP-NOW Bridge v1.16.0-eastmesh-v2026.6.3",
      "datetime": "2026-06-09T10:18:22Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-bridge-espnow-v2026.6.3",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer with ESP-NOW Bridge\r\n\r\nEastMesh `observer-eastmesh-bridge-espnow` firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware `v1.16.0`.\r\n\r\nThis release includes the same Observer updates as `observer-eastmesh-v2026.6.3`, with ESP-NOW bridge support included.\r\n\r\n### What's Changed\r\n\r\n- Same changes as `observer-eastmesh-v2026.6.3`.\r\n- Includes ESP-NOW bridge firmware targets using the `*_repeater_observer_espnow` PlatformIO environment suffix.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Notes\r\n\r\n- This track is separate from `observer-eastmesh`.\r\n- Use `get wifi.status` to confirm the active 2.4 GHz Wi-Fi channel before setting `bridge.channel`.\r\n- `bridge.channel` should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.\r\n- For maximum heap headroom after setup, disable the web panel with `set web off`.\r\n- `flood.max.advert` controls the hop limit for flooded advert packets.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer with ESP-NOW Bridge</h2>\n<p>EastMesh <code>observer-eastmesh-bridge-espnow</code> firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware <code>v1.16.0</code>.</p>\n<p>This release includes the same Observer updates as <code>observer-eastmesh-v2026.6.3</code>, with ESP-NOW bridge support included.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Same changes as <code>observer-eastmesh-v2026.6.3</code>.</li>\n<li>Includes ESP-NOW bridge firmware targets using the <code>*_repeater_observer_espnow</code> PlatformIO environment suffix.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Notes</h3>\n<ul>\n<li>This track is separate from <code>observer-eastmesh</code>.</li>\n<li>Use <code>get wifi.status</code> to confirm the active 2.4 GHz Wi-Fi channel before setting <code>bridge.channel</code>.</li>\n<li><code>bridge.channel</code> should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.</li>\n<li>For maximum heap headroom after setup, disable the web panel with <code>set web off</code>.</li>\n<li><code>flood.max.advert</code> controls the hop limit for flooded advert packets.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "observer-eastmesh-v2026.6.2",
      "name": "Observer EastMesh Firmware v1.16.0-eastmesh-v2026.6.2",
      "datetime": "2026-06-07T05:03:35Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-v2026.6.2",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer\r\n\r\nEastMesh `observer-eastmesh` firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware `v1.16.0`.\r\n\r\nThis release improves Observer boot reliability, T-Beam S3 Supreme telemetry, Wi-Fi/OTA persistence, and web-panel archive maintenance.\r\n\r\n### What's Changed\r\n\r\n- Fixed LilyGo T-Beam S3 Supreme BME280 detection and live telemetry.\r\n- Added board-specific I2C recovery for T-Beam S3 Supreme BME280 reads.\r\n- Changed live `/stats` sensor values to use the main-loop sensor snapshot.\r\n- Improved boot-time Wi-Fi startup on T-Beam S3 Supreme.\r\n- Added last-connected Wi-Fi channel learning with fallback to full scan.\r\n- Added NVS-backed Wi-Fi preference recovery so SSID and password survive OTA updates even if filesystem prefs are lost.\r\n- Hardened Wi-Fi retry handling so scan-mode connects are not interrupted early.\r\n- Fixed `set wifi.powersaving none` when power saving was already disabled.\r\n- Bounded archive neighbour restore and history reads to avoid slow boots from large SD-card archive files.\r\n- Added web-panel and CLI SD purge actions for supported SD-card targets.\r\n- Hardened OTA startup by binding before reporting success and falling back to alternate ports if port 80 is still busy.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Notes\r\n\r\n- `eastmesh-au` remains the recommended MQTT endpoint once `mqtt.iata` is configured.\r\n- Custom MQTT is available for private broker deployments.\r\n- For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with `set web off`.\r\n- Browsers may still require accepting the self-signed certificate warning on first HTTPS access.\r\n- `flood.max.unscoped` defaults to `64`; lower it only if you want to limit how far unscoped flood traffic repeats.\r\n- `flood.max.advert` controls the hop limit for flooded advert packets.\r\n- Wi-Fi credentials are now mirrored into ESP32 NVS for OTA-safe recovery.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer</h2>\n<p>EastMesh <code>observer-eastmesh</code> firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware <code>v1.16.0</code>.</p>\n<p>This release improves Observer boot reliability, T-Beam S3 Supreme telemetry, Wi-Fi/OTA persistence, and web-panel archive maintenance.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Fixed LilyGo T-Beam S3 Supreme BME280 detection and live telemetry.</li>\n<li>Added board-specific I2C recovery for T-Beam S3 Supreme BME280 reads.</li>\n<li>Changed live <code>/stats</code> sensor values to use the main-loop sensor snapshot.</li>\n<li>Improved boot-time Wi-Fi startup on T-Beam S3 Supreme.</li>\n<li>Added last-connected Wi-Fi channel learning with fallback to full scan.</li>\n<li>Added NVS-backed Wi-Fi preference recovery so SSID and password survive OTA updates even if filesystem prefs are lost.</li>\n<li>Hardened Wi-Fi retry handling so scan-mode connects are not interrupted early.</li>\n<li>Fixed <code>set wifi.powersaving none</code> when power saving was already disabled.</li>\n<li>Bounded archive neighbour restore and history reads to avoid slow boots from large SD-card archive files.</li>\n<li>Added web-panel and CLI SD purge actions for supported SD-card targets.</li>\n<li>Hardened OTA startup by binding before reporting success and falling back to alternate ports if port 80 is still busy.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Notes</h3>\n<ul>\n<li><code>eastmesh-au</code> remains the recommended MQTT endpoint once <code>mqtt.iata</code> is configured.</li>\n<li>Custom MQTT is available for private broker deployments.</li>\n<li>For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with <code>set web off</code>.</li>\n<li>Browsers may still require accepting the self-signed certificate warning on first HTTPS access.</li>\n<li><code>flood.max.unscoped</code> defaults to <code>64</code>; lower it only if you want to limit how far unscoped flood traffic repeats.</li>\n<li><code>flood.max.advert</code> controls the hop limit for flooded advert packets.</li>\n<li>Wi-Fi credentials are now mirrored into ESP32 NVS for OTA-safe recovery.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "observer-eastmesh-bridge-espnow-v2026.6.2",
      "name": "Observer EastMesh Firmware with ESP-NOW Bridge v1.16.0-eastmesh-v2026.6.2",
      "datetime": "2026-06-07T05:03:22Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-bridge-espnow-v2026.6.2",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer with ESP-NOW Bridge\r\n\r\nEastMesh `observer-eastmesh-bridge-espnow` firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware `v1.16.0`.\r\n\r\nThis release includes the same Observer updates as `observer-eastmesh-v2026.6.2`, with ESP-NOW bridge support included.\r\n\r\n### What's Changed\r\n\r\n- Same changes as `observer-eastmesh-v2026.6.2`.\r\n- Includes ESP-NOW bridge firmware targets using the `*_repeater_observer_espnow` PlatformIO environment suffix.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Notes\r\n\r\n- This track is separate from `observer-eastmesh`.\r\n- Use `get wifi.status` to confirm the active 2.4 GHz Wi-Fi channel before setting `bridge.channel`.\r\n- `bridge.channel` should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.\r\n- For maximum heap headroom after setup, disable the web panel with `set web off`.\r\n- `flood.max.advert` controls the hop limit for flooded advert packets.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer with ESP-NOW Bridge</h2>\n<p>EastMesh <code>observer-eastmesh-bridge-espnow</code> firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware <code>v1.16.0</code>.</p>\n<p>This release includes the same Observer updates as <code>observer-eastmesh-v2026.6.2</code>, with ESP-NOW bridge support included.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Same changes as <code>observer-eastmesh-v2026.6.2</code>.</li>\n<li>Includes ESP-NOW bridge firmware targets using the <code>*_repeater_observer_espnow</code> PlatformIO environment suffix.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Notes</h3>\n<ul>\n<li>This track is separate from <code>observer-eastmesh</code>.</li>\n<li>Use <code>get wifi.status</code> to confirm the active 2.4 GHz Wi-Fi channel before setting <code>bridge.channel</code>.</li>\n<li><code>bridge.channel</code> should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.</li>\n<li>For maximum heap headroom after setup, disable the web panel with <code>set web off</code>.</li>\n<li><code>flood.max.advert</code> controls the hop limit for flooded advert packets.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "repeater-bridge-espnow-v1.16.0",
      "name": "Repeater ESP-NOW Bridge Firmware v1.16.0",
      "datetime": "2026-06-06T23:20:49Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/repeater-bridge-espnow-v1.16.0",
      "prerelease": false,
      "notes": "## MeshCore Repeater ESP-NOW Bridge\r\n\r\nRepeater ESP-NOW bridge firmware built from the upstream `meshcore-dev/MeshCore` firmware base.\r\n\r\nThis release packages the existing upstream bridge functionality as EastMesh release assets.\r\n\r\n### What's Changed\r\n\r\n- Added release builds for `repeater-bridge-espnow-v*` firmware artifacts.\r\n- Kept the version aligned with upstream MeshCore `v1.16.0`.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Flashing\r\n\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore Repeater ESP-NOW Bridge</h2>\n<p>Repeater ESP-NOW bridge firmware built from the upstream <code>meshcore-dev/MeshCore</code> firmware base.</p>\n<p>This release packages the existing upstream bridge functionality as EastMesh release assets.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Added release builds for <code>repeater-bridge-espnow-v*</code> firmware artifacts.</li>\n<li>Kept the version aligned with upstream MeshCore <code>v1.16.0</code>.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "observer-eastmesh-v2026.6.1",
      "name": "Observer EastMesh Firmware v1.16.0-eastmesh-v2026.6.1",
      "datetime": "2026-06-06T23:40:32Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-v2026.6.1",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer\r\n\r\nEastMesh `observer-eastmesh` firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware `v1.16.0`.\r\n\r\nThis release updates Observer firmware to upstream MeshCore `v1.16.0` with flood-advert controls, web panel refinements, and board/platform fixes.\r\n\r\n### What's Changed\r\n\r\n- Added `flood.max.advert` so flooded advert packets can use their own hop limit.\r\n- Added web panel controls for scoped and unscoped flood max values.\r\n- Improved web panel login recovery and favicon handling.\r\n- Hardened OTA startup from the local web panel by waiting for the OTA HTTP listener before redirecting.\r\n- Merged upstream MeshCore `v1.16.0` dev updates, including companion UI, board, radio, power-saving, documentation, and platform fixes.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Notes\r\n\r\n- `eastmesh-au` remains the recommended MQTT endpoint once `mqtt.iata` is configured.\r\n- Custom MQTT is available for private broker deployments.\r\n- For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with `set web off`.\r\n- Browsers may still require accepting the self-signed certificate warning on first HTTPS access.\r\n- `flood.max.unscoped` defaults to `64`; lower it only if you want to limit how far unscoped flood traffic repeats.\r\n- `flood.max.advert` controls the hop limit for flooded advert packets.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer</h2>\n<p>EastMesh <code>observer-eastmesh</code> firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware <code>v1.16.0</code>.</p>\n<p>This release updates Observer firmware to upstream MeshCore <code>v1.16.0</code> with flood-advert controls, web panel refinements, and board/platform fixes.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Added <code>flood.max.advert</code> so flooded advert packets can use their own hop limit.</li>\n<li>Added web panel controls for scoped and unscoped flood max values.</li>\n<li>Improved web panel login recovery and favicon handling.</li>\n<li>Hardened OTA startup from the local web panel by waiting for the OTA HTTP listener before redirecting.</li>\n<li>Merged upstream MeshCore <code>v1.16.0</code> dev updates, including companion UI, board, radio, power-saving, documentation, and platform fixes.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Notes</h3>\n<ul>\n<li><code>eastmesh-au</code> remains the recommended MQTT endpoint once <code>mqtt.iata</code> is configured.</li>\n<li>Custom MQTT is available for private broker deployments.</li>\n<li>For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with <code>set web off</code>.</li>\n<li>Browsers may still require accepting the self-signed certificate warning on first HTTPS access.</li>\n<li><code>flood.max.unscoped</code> defaults to <code>64</code>; lower it only if you want to limit how far unscoped flood traffic repeats.</li>\n<li><code>flood.max.advert</code> controls the hop limit for flooded advert packets.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "observer-eastmesh-bridge-espnow-v2026.6.1",
      "name": "Observer EastMesh Firmware with ESP-NOW Bridge v1.16.0-eastmesh-v2026.6.1",
      "datetime": "2026-06-06T23:40:20Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-bridge-espnow-v2026.6.1",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer with ESP-NOW Bridge\r\n\r\nEastMesh `observer-eastmesh-bridge-espnow` firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware `v1.16.0`.\r\n\r\nThis release includes the same Observer updates as `observer-eastmesh-v2026.6.1`, with ESP-NOW bridge support included.\r\n\r\n### What's Changed\r\n\r\n- Same changes as `observer-eastmesh-v2026.6.1`.\r\n- Includes ESP-NOW bridge firmware targets using the `*_repeater_observer_espnow` PlatformIO environment suffix.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Notes\r\n\r\n- This track is separate from `observer-eastmesh`.\r\n- Use `get wifi.status` to confirm the active 2.4 GHz Wi-Fi channel before setting `bridge.channel`.\r\n- `bridge.channel` should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.\r\n- For maximum heap headroom after setup, disable the web panel with `set web off`.\r\n- `flood.max.advert` controls the hop limit for flooded advert packets.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer with ESP-NOW Bridge</h2>\n<p>EastMesh <code>observer-eastmesh-bridge-espnow</code> firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware <code>v1.16.0</code>.</p>\n<p>This release includes the same Observer updates as <code>observer-eastmesh-v2026.6.1</code>, with ESP-NOW bridge support included.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Same changes as <code>observer-eastmesh-v2026.6.1</code>.</li>\n<li>Includes ESP-NOW bridge firmware targets using the <code>*_repeater_observer_espnow</code> PlatformIO environment suffix.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Notes</h3>\n<ul>\n<li>This track is separate from <code>observer-eastmesh</code>.</li>\n<li>Use <code>get wifi.status</code> to confirm the active 2.4 GHz Wi-Fi channel before setting <code>bridge.channel</code>.</li>\n<li><code>bridge.channel</code> should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.</li>\n<li>For maximum heap headroom after setup, disable the web panel with <code>set web off</code>.</li>\n<li><code>flood.max.advert</code> controls the hop limit for flooded advert packets.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "companion-wifi-v1.16.0",
      "name": "Companion WiFi Firmware v1.16.0",
      "datetime": "2026-06-06T23:20:08Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/companion-wifi-v1.16.0",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Companion WiFi\r\n\r\nThis is standard MeshCore companion WiFi firmware based on MeshCore `v1.16.0`, with a few extra Wi-Fi setup commands added for EastMesh.\r\n\r\n### What’s Different\r\n\r\nThe only EastMesh-specific addition is a small set of Wi-Fi CLI commands that let you view and save Wi-Fi settings:\r\n\r\n- `get wifi.status`\r\n- `get wifi.ssid`\r\n- `get wifi.powersaving`\r\n- `set wifi.ssid <ssid>`\r\n- `set wifi.pwd <password>`\r\n- `set wifi.powersaving none|min|max`\r\n\r\n### Notes\r\n\r\n- Everything else behaves like the normal MeshCore companion WiFi firmware\r\n- Use the file that matches your board exactly\r\n- Companion WiFi releases use the upstream MeshCore version number\r\n\r\n### Documentation\r\n\r\nhttps://xjarid.github.io/MeshCore-EastMesh/\r\n\r\n### Flashing\r\n\r\n- https://flasher.eastmesh.au/\r\n- https://flasher.meshcore.io/\r\n\r\n### Assets\r\n\r\n- `.bin` – standard update\r\n- `-merged.bin` – full image (after erase, ESP32)",
      "notesHtml": "<h2>MeshCore EastMesh Companion WiFi</h2>\n<p>This is standard MeshCore companion WiFi firmware based on MeshCore <code>v1.16.0</code>, with a few extra Wi-Fi setup commands added for EastMesh.</p>\n<h3>What’s Different</h3>\n<p>The only EastMesh-specific addition is a small set of Wi-Fi CLI commands that let you view and save Wi-Fi settings:</p>\n<ul>\n<li><code>get wifi.status</code></li>\n<li><code>get wifi.ssid</code></li>\n<li><code>get wifi.powersaving</code></li>\n<li><code>set wifi.ssid &lt;ssid&gt;</code></li>\n<li><code>set wifi.pwd &lt;password&gt;</code></li>\n<li><code>set wifi.powersaving none|min|max</code></li>\n</ul>\n<h3>Notes</h3>\n<ul>\n<li>Everything else behaves like the normal MeshCore companion WiFi firmware</li>\n<li>Use the file that matches your board exactly</li>\n<li>Companion WiFi releases use the upstream MeshCore version number</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">https://xjarid.github.io/MeshCore-EastMesh/</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">https://flasher.eastmesh.au/</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">https://flasher.meshcore.io/</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> – standard update</li>\n<li><code>-merged.bin</code> – full image (after erase, ESP32)</li>\n</ul>\n"
    },
    {
      "version": "observer-eastmesh-v2026.6.0",
      "name": "Observer EastMesh Firmware v1.15.0-eastmesh-v2026.6.0",
      "datetime": "2026-06-03T02:49:43Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-v2026.6.0",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer\r\n\r\nEastMesh `observer-eastmesh` firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware `v1.15.0`.\r\n\r\nThis release updates Observer firmware with the latest upstream MeshCore dev changes plus EastMesh web panel, MQTT, radio, and board support fixes.\r\n\r\n### What's Changed\r\n\r\n- Added configurable custom MQTT broker support alongside the curated EastMesh and LetsMesh endpoints.\r\n- Added Station G3 ESP32 Observer firmware targets.\r\n- Added `flood.max.unscoped` so unscoped flood packets can use a separate hop limit from scoped flood traffic.\r\n- Preserved web panel sessions across Wi-Fi reconnects.\r\n- Hardened OTA startup from the local web panel and existing Wi-Fi connections.\r\n- Hardened LilyGo T-Beam 1W radio setup.\r\n- Restored the missing SX126x register patch.\r\n- Merged upstream MeshCore dev updates, including sensor handling, RAK4631 BME680/BSEC support, documentation refreshes, and board/platform fixes.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Notes\r\n\r\n- `eastmesh-au` remains the recommended MQTT endpoint once `mqtt.iata` is configured.\r\n- Custom MQTT is available for private broker deployments.\r\n- For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with `set web off`.\r\n- Browsers may still require accepting the self-signed certificate warning on first HTTPS access.\r\n- `flood.max.unscoped` defaults to `64`; lower it only if you want to limit how far unscoped flood traffic repeats.\r\n- If using LilyGo T-Beam 1W fan controls after upgrading, re-save your preferred fan settings if needed.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer</h2>\n<p>EastMesh <code>observer-eastmesh</code> firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware <code>v1.15.0</code>.</p>\n<p>This release updates Observer firmware with the latest upstream MeshCore dev changes plus EastMesh web panel, MQTT, radio, and board support fixes.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Added configurable custom MQTT broker support alongside the curated EastMesh and LetsMesh endpoints.</li>\n<li>Added Station G3 ESP32 Observer firmware targets.</li>\n<li>Added <code>flood.max.unscoped</code> so unscoped flood packets can use a separate hop limit from scoped flood traffic.</li>\n<li>Preserved web panel sessions across Wi-Fi reconnects.</li>\n<li>Hardened OTA startup from the local web panel and existing Wi-Fi connections.</li>\n<li>Hardened LilyGo T-Beam 1W radio setup.</li>\n<li>Restored the missing SX126x register patch.</li>\n<li>Merged upstream MeshCore dev updates, including sensor handling, RAK4631 BME680/BSEC support, documentation refreshes, and board/platform fixes.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Notes</h3>\n<ul>\n<li><code>eastmesh-au</code> remains the recommended MQTT endpoint once <code>mqtt.iata</code> is configured.</li>\n<li>Custom MQTT is available for private broker deployments.</li>\n<li>For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with <code>set web off</code>.</li>\n<li>Browsers may still require accepting the self-signed certificate warning on first HTTPS access.</li>\n<li><code>flood.max.unscoped</code> defaults to <code>64</code>; lower it only if you want to limit how far unscoped flood traffic repeats.</li>\n<li>If using LilyGo T-Beam 1W fan controls after upgrading, re-save your preferred fan settings if needed.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "observer-eastmesh-bridge-espnow-v2026.6.0",
      "name": "Observer EastMesh Firmware with ESP-NOW Bridge v1.15.0-eastmesh-v2026.6.0",
      "datetime": "2026-06-03T02:49:29Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-bridge-espnow-v2026.6.0",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer with ESP-NOW Bridge\r\n\r\nEastMesh `observer-eastmesh-bridge-espnow` firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware `v1.15.0`.\r\n\r\nThis release includes the same Observer updates as `observer-eastmesh-v2026.6.0`, with ESP-NOW bridge support included.\r\n\r\n### What's Changed\r\n\r\n- Same changes as `observer-eastmesh-v2026.6.0`.\r\n- Includes ESP-NOW bridge firmware targets using the `*_repeater_observer_espnow` PlatformIO environment suffix.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Notes\r\n\r\n- This track is separate from `observer-eastmesh`.\r\n- Use `get wifi.status` to confirm the active 2.4 GHz Wi-Fi channel before setting `bridge.channel`.\r\n- `bridge.channel` should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.\r\n- For maximum heap headroom after setup, disable the web panel with `set web off`.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer with ESP-NOW Bridge</h2>\n<p>EastMesh <code>observer-eastmesh-bridge-espnow</code> firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware <code>v1.15.0</code>.</p>\n<p>This release includes the same Observer updates as <code>observer-eastmesh-v2026.6.0</code>, with ESP-NOW bridge support included.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Same changes as <code>observer-eastmesh-v2026.6.0</code>.</li>\n<li>Includes ESP-NOW bridge firmware targets using the <code>*_repeater_observer_espnow</code> PlatformIO environment suffix.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Notes</h3>\n<ul>\n<li>This track is separate from <code>observer-eastmesh</code>.</li>\n<li>Use <code>get wifi.status</code> to confirm the active 2.4 GHz Wi-Fi channel before setting <code>bridge.channel</code>.</li>\n<li><code>bridge.channel</code> should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.</li>\n<li>For maximum heap headroom after setup, disable the web panel with <code>set web off</code>.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "observer-eastmesh-v2026.5.1",
      "name": "Observer EastMesh Firmware v1.15.0-eastmesh-v2026.5.1",
      "datetime": "2026-05-23T11:39:54Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-v2026.5.1",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer\r\n\r\nEastMesh `observer-eastmesh` firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware `v1.15.0`.\r\n\r\nThis release renames the EastMesh MQTT observer firmware and release track, aligning release tags and PlatformIO target names with the new Observer naming.\r\n\r\n### What's Changed\r\n\r\n- Renamed the EastMesh MQTT release tag format from `repeater-mqtt-eastmesh-v*` to `observer-eastmesh-v*`.\r\n- Renamed `*_repeater_mqtt` PlatformIO environments and release artifact prefixes to `*_repeater_observer`.\r\n- Updated EastMesh release, local build, board, web panel, API, and CLI documentation to use Observer naming.\r\n\r\n### Breaking Changes\r\n\r\n- The EastMesh MQTT release tag format and PlatformIO target suffix changed to Observer naming.\r\n\r\n### Notes\r\n\r\n- `eastmesh-au` remains the recommended MQTT endpoint once `mqtt.iata` is configured.\r\n- For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with `set web off`.\r\n- Browsers may still require accepting the self-signed certificate warning on first HTTPS access.\r\n- If upgrading from a build older than `observer-eastmesh-v1.3.11`, use the web `Start OTA` button if `start ota` sends you through an odd redirect.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer</h2>\n<p>EastMesh <code>observer-eastmesh</code> firmware for MeshCore boards with secure MQTT uplink and optional local web management, based on MeshCore firmware <code>v1.15.0</code>.</p>\n<p>This release renames the EastMesh MQTT observer firmware and release track, aligning release tags and PlatformIO target names with the new Observer naming.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Renamed the EastMesh MQTT release tag format from <code>repeater-mqtt-eastmesh-v*</code> to <code>observer-eastmesh-v*</code>.</li>\n<li>Renamed <code>*_repeater_mqtt</code> PlatformIO environments and release artifact prefixes to <code>*_repeater_observer</code>.</li>\n<li>Updated EastMesh release, local build, board, web panel, API, and CLI documentation to use Observer naming.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<ul>\n<li>The EastMesh MQTT release tag format and PlatformIO target suffix changed to Observer naming.</li>\n</ul>\n<h3>Notes</h3>\n<ul>\n<li><code>eastmesh-au</code> remains the recommended MQTT endpoint once <code>mqtt.iata</code> is configured.</li>\n<li>For maximum heap headroom on busy observers, use the web panel for setup and troubleshooting, then disable it with <code>set web off</code>.</li>\n<li>Browsers may still require accepting the self-signed certificate warning on first HTTPS access.</li>\n<li>If upgrading from a build older than <code>observer-eastmesh-v1.3.11</code>, use the web <code>Start OTA</code> button if <code>start ota</code> sends you through an odd redirect.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "observer-eastmesh-bridge-espnow-v2026.5.1",
      "name": "Observer EastMesh Firmware with ESP-NOW Bridge v1.15.0-eastmesh-v2026.5.1",
      "datetime": "2026-05-23T11:39:36Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/observer-eastmesh-bridge-espnow-v2026.5.1",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Observer with ESP-NOW Bridge\r\n\r\nEastMesh `observer-eastmesh-bridge-espnow` firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware `v1.15.0`.\r\n\r\nThis release renames the EastMesh MQTT bridge observer firmware and release track, aligning release tags and PlatformIO target names with the new Observer naming.\r\n\r\n### What's Changed\r\n\r\n- Renamed the EastMesh MQTT bridge release tag format from `repeater-mqtt-bridge-eastmesh-v*` to `observer-eastmesh-bridge-espnow-v*`.\r\n- Renamed `*_repeater_mqtt_bridge` PlatformIO environments and release artifact prefixes to `*_repeater_observer_espnow`.\r\n- Updated EastMesh release, local build, board, and CLI documentation to use Observer ESP-NOW naming.\r\n\r\n### Breaking Changes\r\n\r\n- The EastMesh MQTT bridge release tag format and PlatformIO target suffix changed to Observer ESP-NOW naming.\r\n\r\n### Notes\r\n\r\n- This track is separate from `observer-eastmesh`.\r\n- Use `get wifi.status` to confirm the active 2.4 GHz Wi-Fi channel before setting `bridge.channel`.\r\n- `bridge.channel` should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.\r\n- For maximum heap headroom after setup, disable the web panel with `set web off`.\r\n\r\n### Documentation\r\n\r\n[xjarid.github.io/MeshCore-EastMesh](https://xjarid.github.io/MeshCore-EastMesh/)\r\n\r\n### Flashing\r\n\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore EastMesh Observer with ESP-NOW Bridge</h2>\n<p>EastMesh <code>observer-eastmesh-bridge-espnow</code> firmware for MeshCore boards that combine secure MQTT uplink with ESP-NOW bridge support, based on MeshCore firmware <code>v1.15.0</code>.</p>\n<p>This release renames the EastMesh MQTT bridge observer firmware and release track, aligning release tags and PlatformIO target names with the new Observer naming.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Renamed the EastMesh MQTT bridge release tag format from <code>repeater-mqtt-bridge-eastmesh-v*</code> to <code>observer-eastmesh-bridge-espnow-v*</code>.</li>\n<li>Renamed <code>*_repeater_mqtt_bridge</code> PlatformIO environments and release artifact prefixes to <code>*_repeater_observer_espnow</code>.</li>\n<li>Updated EastMesh release, local build, board, and CLI documentation to use Observer ESP-NOW naming.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<ul>\n<li>The EastMesh MQTT bridge release tag format and PlatformIO target suffix changed to Observer ESP-NOW naming.</li>\n</ul>\n<h3>Notes</h3>\n<ul>\n<li>This track is separate from <code>observer-eastmesh</code>.</li>\n<li>Use <code>get wifi.status</code> to confirm the active 2.4 GHz Wi-Fi channel before setting <code>bridge.channel</code>.</li>\n<li><code>bridge.channel</code> should match the connected Wi-Fi channel for reliable ESP-NOW bridge operation.</li>\n<li>For maximum heap headroom after setup, disable the web panel with <code>set web off</code>.</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">xjarid.github.io/MeshCore-EastMesh</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "repeater-bridge-espnow-v1.15.0",
      "name": "Repeater ESP-NOW Bridge Firmware v1.15.0",
      "datetime": "2026-05-05T23:41:38Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/repeater-bridge-espnow-v1.15.0",
      "prerelease": false,
      "notes": "## MeshCore Repeater ESP-NOW Bridge\r\n\r\nRepeater ESP-NOW bridge firmware built from the upstream `meshcore-dev/MeshCore` firmware base.\r\n\r\nThis release packages the existing upstream bridge functionality as EastMesh release assets.\r\n\r\n### What's Changed\r\n\r\n- Added release builds for `repeater-bridge-espnow-v*` firmware artifacts.\r\n- Kept the version aligned with upstream MeshCore `v1.15.0`.\r\n\r\n### Breaking Changes\r\n\r\nNone.\r\n\r\n### Flashing\r\n\r\n- [flasher.meshcore.io](https://flasher.meshcore.io/)\r\n- [flasher.eastmesh.au](https://flasher.eastmesh.au/)\r\n\r\n### Assets\r\n\r\n- `.bin` - standard update image\r\n- `-merged.bin` - full ESP32 image for flashing after erase",
      "notesHtml": "<h2>MeshCore Repeater ESP-NOW Bridge</h2>\n<p>Repeater ESP-NOW bridge firmware built from the upstream <code>meshcore-dev/MeshCore</code> firmware base.</p>\n<p>This release packages the existing upstream bridge functionality as EastMesh release assets.</p>\n<h3>What's Changed</h3>\n<ul>\n<li>Added release builds for <code>repeater-bridge-espnow-v*</code> firmware artifacts.</li>\n<li>Kept the version aligned with upstream MeshCore <code>v1.15.0</code>.</li>\n</ul>\n<h3>Breaking Changes</h3>\n<p>None.</p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.meshcore.io</a></li>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">flasher.eastmesh.au</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> - standard update image</li>\n<li><code>-merged.bin</code> - full ESP32 image for flashing after erase</li>\n</ul>\n"
    },
    {
      "version": "companion-wifi-v1.15.0",
      "name": "Companion WiFi Firmware v1.15.0",
      "datetime": "2026-04-19T02:53:50Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/companion-wifi-v1.15.0",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Companion WiFi\r\n\r\nThis is standard MeshCore companion WiFi firmware based on MeshCore `v1.15.0`, with a few extra Wi-Fi setup commands added for EastMesh.\r\n\r\n### What’s Different\r\n\r\nThe only EastMesh-specific addition is a small set of Wi-Fi CLI commands that let you view and save Wi-Fi settings:\r\n\r\n- `get wifi.status`\r\n- `get wifi.ssid`\r\n- `get wifi.powersaving`\r\n- `set wifi.ssid <ssid>`\r\n- `set wifi.pwd <password>`\r\n- `set wifi.powersaving none|min|max`\r\n\r\n### Notes\r\n\r\n- Everything else behaves like the normal MeshCore companion WiFi firmware\r\n- Use the file that matches your board exactly\r\n- Companion WiFi releases use the upstream MeshCore version number\r\n\r\n### Documentation\r\n\r\nhttps://xjarid.github.io/MeshCore-EastMesh/\r\n\r\n### Flashing\r\n\r\n- https://flasher.eastmesh.au/\r\n- https://flasher.meshcore.io/\r\n\r\n### Assets\r\n\r\n- `.bin` – standard update\r\n- `-merged.bin` – full image (after erase, ESP32)",
      "notesHtml": "<h2>MeshCore EastMesh Companion WiFi</h2>\n<p>This is standard MeshCore companion WiFi firmware based on MeshCore <code>v1.15.0</code>, with a few extra Wi-Fi setup commands added for EastMesh.</p>\n<h3>What’s Different</h3>\n<p>The only EastMesh-specific addition is a small set of Wi-Fi CLI commands that let you view and save Wi-Fi settings:</p>\n<ul>\n<li><code>get wifi.status</code></li>\n<li><code>get wifi.ssid</code></li>\n<li><code>get wifi.powersaving</code></li>\n<li><code>set wifi.ssid &lt;ssid&gt;</code></li>\n<li><code>set wifi.pwd &lt;password&gt;</code></li>\n<li><code>set wifi.powersaving none|min|max</code></li>\n</ul>\n<h3>Notes</h3>\n<ul>\n<li>Everything else behaves like the normal MeshCore companion WiFi firmware</li>\n<li>Use the file that matches your board exactly</li>\n<li>Companion WiFi releases use the upstream MeshCore version number</li>\n</ul>\n<h3>Documentation</h3>\n<p><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">https://xjarid.github.io/MeshCore-EastMesh/</a></p>\n<h3>Flashing</h3>\n<ul>\n<li><a href=\"https://flasher.eastmesh.au/\" target=\"_blank\" rel=\"noopener noreferrer\">https://flasher.eastmesh.au/</a></li>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">https://flasher.meshcore.io/</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> – standard update</li>\n<li><code>-merged.bin</code> – full image (after erase, ESP32)</li>\n</ul>\n"
    },
    {
      "version": "companion-wifi-v1.14.1",
      "name": "Companion WiFi Firmware v1.14.1",
      "datetime": "2026-04-09T07:16:35Z",
      "url": "https://github.com/xJARiD/MeshCore-EastMesh/releases/tag/companion-wifi-v1.14.1",
      "prerelease": false,
      "notes": "## MeshCore EastMesh Companion WiFi\r\n\r\nThis release publishes the EastMesh `companion_radio_wifi` builds for supported boards.\r\n\r\n### Highlights\r\n\r\n- WiFi-enabled companion firmware builds for EastMesh-supported MeshCore boards\r\n- Local build and release flow now standardized through `uv`\r\n- Persisted companion WiFi rescue commands added:\r\n  - `get wifi.status`\r\n  - `get wifi.ssid`\r\n  - `get wifi.powersaving`\r\n  - `set wifi.ssid <ssid>`\r\n  - `set wifi.pwd <password>`\r\n  - `set wifi.powersaving none|min|max`\r\n- EastMesh release automation and docs flow now in place\r\n\r\n### Notes\r\n\r\n- This release uses the upstream MeshCore firmware version for `FIRMWARE_VERSION`\r\n- Use the asset that matches your board exactly\r\n- For flashing custom firmware, use:\r\n  - https://flasher.meshcore.io/\r\n\r\n### Documentation\r\n\r\nTemporary docs home:\r\n- https://xjarid.github.io/MeshCore-EastMesh/\r\n\r\n### Assets\r\n\r\n- `.bin` = normal update / incremental flash\r\n- `-merged.bin` = clean flash after erase on supported ESP32 targets",
      "notesHtml": "<h2>MeshCore EastMesh Companion WiFi</h2>\n<p>This release publishes the EastMesh <code>companion_radio_wifi</code> builds for supported boards.</p>\n<h3>Highlights</h3>\n<ul>\n<li>WiFi-enabled companion firmware builds for EastMesh-supported MeshCore boards</li>\n<li>Local build and release flow now standardized through <code>uv</code></li>\n<li>Persisted companion WiFi rescue commands added:<ul>\n<li><code>get wifi.status</code></li>\n<li><code>get wifi.ssid</code></li>\n<li><code>get wifi.powersaving</code></li>\n<li><code>set wifi.ssid &lt;ssid&gt;</code></li>\n<li><code>set wifi.pwd &lt;password&gt;</code></li>\n<li><code>set wifi.powersaving none|min|max</code></li>\n</ul>\n</li>\n<li>EastMesh release automation and docs flow now in place</li>\n</ul>\n<h3>Notes</h3>\n<ul>\n<li>This release uses the upstream MeshCore firmware version for <code>FIRMWARE_VERSION</code></li>\n<li>Use the asset that matches your board exactly</li>\n<li>For flashing custom firmware, use:<ul>\n<li><a href=\"https://flasher.meshcore.io/\" target=\"_blank\" rel=\"noopener noreferrer\">https://flasher.meshcore.io/</a></li>\n</ul>\n</li>\n</ul>\n<h3>Documentation</h3>\n<p>Temporary docs home:</p>\n<ul>\n<li><a href=\"https://xjarid.github.io/MeshCore-EastMesh/\" target=\"_blank\" rel=\"noopener noreferrer\">https://xjarid.github.io/MeshCore-EastMesh/</a></li>\n</ul>\n<h3>Assets</h3>\n<ul>\n<li><code>.bin</code> = normal update / incremental flash</li>\n<li><code>-merged.bin</code> = clean flash after erase on supported ESP32 targets</li>\n</ul>\n"
    }
  ],
  "changelogSource": "github",
  "changelogUpdatedAt": "2026-06-21T09:55:28.646Z"
}
