Files
shade c86ae584ab
Build and deploy Docs site to GitHub Pages / github-pages (push) Canceled after 0s
PR Build Check / build (Heltec_v3_companion_radio_ble) (push) Canceled after 0s
PR Build Check / build (Heltec_v3_repeater) (push) Canceled after 0s
PR Build Check / build (Heltec_v3_room_server) (push) Canceled after 0s
PR Build Check / build (LilyGo_Tlora_C6_repeater_) (push) Canceled after 0s
PR Build Check / build (PicoW_repeater) (push) Canceled after 0s
PR Build Check / build (RAK_4631_companion_radio_ble) (push) Canceled after 0s
PR Build Check / build (RAK_4631_companion_radio_ethernet) (push) Canceled after 0s
PR Build Check / build (RAK_4631_repeater) (push) Canceled after 0s
PR Build Check / build (RAK_4631_repeater_ethernet) (push) Canceled after 0s
PR Build Check / build (RAK_4631_room_server) (push) Canceled after 0s
PR Build Check / build (RAK_4631_room_server_ethernet) (push) Canceled after 0s
PR Build Check / build (Tbeam_SX1276_repeater) (push) Canceled after 0s
PR Build Check / build (wio-e5-mini_repeater) (push) Canceled after 0s
PR Build Check / build (wio_wm1110_repeater) (push) Canceled after 0s
Run Unit Tests / test (push) Canceled after 0s
refactor: rebrand to PosadMesh, translate docs to Russian, drop legacy brokers
2026-10-07 19:04:39 +03:00

865 lines
53 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
schema_version: 1
tracks:
- companion-wifi
- repeater-bridge-espnow
- observer-posadmesh
- observer-posadmesh-bridge-espnow
generated_from: "Adjacent git tag comparisons plus non-merge commit subjects."
releases:
- track: companion-wifi
version: "1.14.1"
tag: "companion-wifi-v1.14.1"
date: "2026-04-09"
previous_version: null
summary: "First EastMesh companion_wifi release with persisted Wi-Fi CLI settings and EastMesh-specific docs and release plumbing."
changes:
- type: added
area: companion-wifi
text: "Added the EastMesh companion_wifi release track for supported boards."
- type: added
area: wifi
text: "Added persisted Wi-Fi CLI settings so companion Wi-Fi devices can retain configured credentials across restart."
- type: added
area: release
text: "Added EastMesh release documentation, local build guidance, and CI workflows focused on the supported Wi-Fi and MQTT firmware tracks."
- type: changed
area: docs
text: "Refreshed the docs site structure and theme as part of the first EastMesh release set."
breaking_changes: []
- track: companion-wifi
version: "1.15.0"
tag: "companion-wifi-v1.15.0"
date: "2026-04-19"
previous_version: "1.14.1"
summary: "Prepares the next companion_wifi release on top of upstream MeshCore firmware v1.15.0."
changes:
- type: changed
area: upstream
text: "Updated the companion_wifi firmware base to upstream MeshCore v1.15.0."
breaking_changes: []
- track: companion-wifi
version: "1.16.0"
tag: "companion-wifi-v1.16.0"
date: "2026-06-07"
previous_version: "1.15.0"
summary: "Updates companion WiFi firmware to upstream MeshCore v1.16.0."
changes:
- type: changed
area: upstream
text: "Updated the companion WiFi firmware base to upstream MeshCore v1.16.0."
- type: changed
area: board
text: "Included upstream board, UI, power-saving, and platform fixes from MeshCore dev."
breaking_changes: []
- track: companion-wifi
version: "1.17.0"
tag: "companion-wifi-v1.17.0"
date: "2026-08-09"
previous_version: "1.16.0"
summary: "Updates companion WiFi firmware to upstream MeshCore v1.17.0 with the new key-based settings format, interface manager, and a recovery access point for fixing Wi-Fi credentials without a serial cable."
changes:
- type: changed
area: upstream
text: "Updated the companion WiFi firmware base to upstream MeshCore v1.17.0."
- type: added
area: wifi
text: "Added a recovery access point: when the device has no Wi-Fi credentials or cannot connect for 60 seconds, it broadcasts `EastMesh-WiFi` (WPA2 password = the device pin zero-padded to 8 digits) and shuts the AP down automatically once the configured network connects."
- type: added
area: cli
text: "Exposed the rescue CLI over TCP port 23 on the recovery AP (`telnet 192.168.4.1`), so `set wifi.ssid`, `set wifi.pwd`, and `reboot` work without a serial cable."
- type: added
area: wifi
text: "The companion app works over the recovery AP too: connect to host `192.168.4.1` port `5000` for full app connectivity while roaming away from the configured network."
- type: added
area: wifi
text: "Gave companion WiFi builds the BLE-style device pin rules: displays show a per-session `Pin:NNNNNN` on the home screen, headless devices default to pin `123456` (AP password `00123456`), and `set pin` overrides both persistently."
- type: fixed
area: wifi
text: "Kept the recovery AP joinable by pausing constant station rescans while it is up (they broke joining clients' WPA2 handshakes, which phones report as a wrong password); the configured network is retried once a minute instead."
- type: changed
area: prefs
text: "Moved saved node settings to upstream's new key-based `prefs.json` format; existing settings, including persisted Wi-Fi credentials, are migrated automatically on first boot."
- type: changed
area: wifi
text: "Adopted upstream's new interface manager so BLE, Wi-Fi, USB, and serial companion connections are handled uniformly, while keeping Wi-Fi credentials configurable at runtime."
- type: changed
area: board
text: "Included upstream board, radio, display, UI, and platform fixes from MeshCore dev, including new board support and LR2021 radio groundwork."
breaking_changes:
- "Saved settings move to the new `prefs.json` format on first boot; downgrading to earlier firmware afterwards reverts the device to the old (pre-migration) settings file."
- track: companion-wifi
version: "1.17.1"
tag: "companion-wifi-v1.17.1"
date: "2026-08-15"
previous_version: "1.17.0"
summary: "Updates companion WiFi firmware to upstream MeshCore v1.17.1 with radio gain and board fixes."
changes:
- type: changed
area: upstream
text: "Updated the companion WiFi firmware base to upstream MeshCore v1.17.1."
- type: fixed
area: radio
text: "Kept the user-configured RX boosted gain setting after an automatic gain control reset instead of reverting to the compiled-in default (SX126x radios)."
- type: changed
area: board
text: "Included upstream board, radio, display, and platform fixes from MeshCore dev, including external FEM gain groundwork for companion builds."
breaking_changes: []
- track: repeater-bridge-espnow
version: "1.15.0"
tag: "repeater-bridge-espnow-v1.15.0"
date: "2026-05-05"
previous_version: null
summary: "Adds a tagged release workflow for upstream-versioned repeater ESP-NOW bridge firmware artifacts."
changes:
- type: added
area: release
text: "Added the `repeater-bridge-espnow-v*` release tag format and workflow for building repeater ESP-NOW bridge firmware artifacts using the official upstream MeshCore version."
- type: fixed
area: build
text: "Kept pure ESP-NOW bridge targets out of the web-panel link path so they no longer fail with unresolved web service symbols."
- type: docs
area: release
text: "Updated release guidance to document the repeater ESP-NOW bridge tag format and versioning rule."
breaking_changes: []
- track: repeater-bridge-espnow
version: "1.16.0"
tag: "repeater-bridge-espnow-v1.16.0"
date: "2026-06-07"
previous_version: "1.15.0"
summary: "Updates repeater ESP-NOW bridge firmware to upstream MeshCore v1.16.0."
changes:
- type: changed
area: upstream
text: "Updated the repeater ESP-NOW bridge firmware base to upstream MeshCore v1.16.0."
- type: changed
area: board
text: "Included upstream board, radio, UI, and platform fixes from MeshCore dev."
breaking_changes: []
- track: repeater-bridge-espnow
version: "1.17.0"
tag: "repeater-bridge-espnow-v1.17.0"
date: "2026-08-09"
previous_version: "1.16.0"
summary: "Updates repeater ESP-NOW bridge firmware to upstream MeshCore v1.17.0 with the new key-based settings format."
changes:
- type: changed
area: upstream
text: "Updated the repeater ESP-NOW bridge firmware base to upstream MeshCore v1.17.0."
- type: changed
area: prefs
text: "Moved saved node settings to upstream's new key-based `prefs.json` format; existing settings, including bridge configuration, are migrated automatically on first boot."
- type: changed
area: board
text: "Included upstream board, radio, display, and platform fixes from MeshCore dev, including new board support and an external watchdog manager."
breaking_changes:
- "Saved settings move to the new `prefs.json` format on first boot; downgrading to earlier firmware afterwards reverts the device to the old (pre-migration) settings file."
- track: repeater-bridge-espnow
version: "1.17.1"
tag: "repeater-bridge-espnow-v1.17.1"
date: "2026-08-15"
previous_version: "1.17.0"
summary: "Updates repeater ESP-NOW bridge firmware to upstream MeshCore v1.17.1 with reply-routing improvements and radio gain fixes."
changes:
- type: changed
area: upstream
text: "Updated the repeater ESP-NOW bridge firmware base to upstream MeshCore v1.17.1."
- type: changed
area: mesh
text: "Improved reply routing: direct requests now reply over the stored return path when one is known, and replies fall back to the repeater's default scope when the request scope is unknown, instead of always flooding un-scoped."
- type: fixed
area: radio
text: "Kept the user-configured RX boosted gain setting after an automatic gain control reset instead of reverting to the compiled-in default (SX126x radios)."
- type: added
area: cli
text: "Added `get radio.fem.txgain` and `set radio.fem.txgain on|off` for boards with a controllable external FEM PA gain (such as Station G3)."
- type: changed
area: board
text: "Included upstream board, radio, display, and platform fixes from MeshCore dev."
breaking_changes: []
- track: observer-posadmesh
version: "2026.5.1"
tag: "observer-eastmesh-v2026.5.1"
date: "2026-05-23"
previous_version: "1.4.0"
summary: "Renames the EastMesh MQTT repeater release track and PlatformIO targets to Observer naming."
changes:
- type: changed
area: release
text: "Renamed the EastMesh MQTT release tag format from `repeater-mqtt-eastmesh-v*` to `observer-eastmesh-v*`."
- type: changed
area: build
text: "Renamed `*_repeater_mqtt` PlatformIO environments and release artifact prefixes to `*_repeater_observer`."
- type: docs
area: docs
text: "Updated EastMesh release, local build, board, web panel, API, and CLI documentation to use Observer naming."
breaking_changes:
- "The EastMesh MQTT release tag format and PlatformIO target suffix changed to Observer naming."
- track: observer-posadmesh
version: "2026.6.0"
tag: "observer-eastmesh-v2026.6.0"
date: "2026-06-03"
previous_version: "2026.5.1"
summary: "Updates Observer firmware with the latest upstream MeshCore dev changes plus EastMesh web panel, MQTT, radio, and board support fixes."
changes:
- type: added
area: mqtt
text: "Added configurable custom MQTT broker support alongside the curated EastMesh and LetsMesh endpoints."
- type: added
area: build
text: "Added Station G3 ESP32 Observer firmware targets."
- type: added
area: cli
text: "Added `flood.max.unscoped` so unscoped flood packets can use a separate hop limit from scoped flood traffic."
- type: fixed
area: web
text: "Preserved web panel sessions across Wi-Fi reconnects and hardened OTA startup from the local web panel."
- type: fixed
area: radio
text: "Hardened LilyGo T-Beam 1W radio setup and restored the missing SX126x register patch."
- type: changed
area: upstream
text: "Merged upstream MeshCore dev updates including sensor handling, RAK4631 BME680/BSEC support, documentation refreshes, and board/platform fixes."
breaking_changes: []
- track: observer-posadmesh
version: "2026.6.1"
tag: "observer-eastmesh-v2026.6.1"
date: "2026-06-07"
previous_version: "2026.6.0"
summary: "Updates Observer firmware to upstream MeshCore v1.16.0 with flood-advert controls and board/platform fixes."
changes:
- type: added
area: cli
text: "Added `flood.max.advert` so flooded advert packets can use their own hop limit."
- type: changed
area: upstream
text: "Merged upstream MeshCore v1.16.0 dev updates including companion UI, board, radio, power-saving, documentation, and platform fixes."
- type: docs
area: docs
text: "Updated EastMesh custom CLI docs for the new `flood.max.advert` command."
breaking_changes: []
- track: observer-posadmesh
version: "2026.6.2"
tag: "observer-eastmesh-v2026.6.2"
date: "2026-06-07"
previous_version: "2026.6.1"
summary: "Improves Observer boot reliability, T-Beam S3 Supreme telemetry, Wi-Fi/OTA persistence, and web-panel archive maintenance."
changes:
- type: fixed
area: board
text: "Fixed LilyGo T-Beam S3 Supreme BME280 detection and live telemetry by using the board-detected address, stop-based I2C reads, and board-specific I2C bus recovery before samples."
- type: fixed
area: web
text: "Changed live `/stats` sensor values to use the main-loop sensor snapshot instead of reading I2C sensors from the web request handler."
- type: fixed
area: wifi
text: "Improved boot-time Wi-Fi startup by starting Wi-Fi earlier on T-Beam S3 Supreme, remembering the last connected AP channel, and falling back to full scan if that channel is stale."
- type: fixed
area: wifi
text: "Added NVS-backed Wi-Fi preference recovery so SSID and password survive OTA updates even if the filesystem preference file is lost."
- type: fixed
area: wifi
text: "Hardened Wi-Fi retry handling so scan-mode connects are not interrupted early and failed attempts reset the ESP32 station state before retrying."
- type: fixed
area: cli
text: "Fixed `set wifi.powersaving none` returning an error when Wi-Fi power saving was already disabled."
- type: fixed
area: archive
text: "Bounded archive neighbour restore and history reads so large SD-card archive files no longer slow boot unnecessarily."
- type: added
area: web
text: "Added a web-panel and CLI SD purge action for clearing archive contents from supported SD-card targets."
- type: fixed
area: web
text: "Hardened OTA startup by binding before reporting success and falling back to alternate ports when port 80 is still being released."
breaking_changes: []
- track: observer-posadmesh
version: "2026.6.3"
tag: "observer-eastmesh-v2026.6.3"
date: "2026-06-09"
previous_version: "2026.6.2"
summary: "Adds secure WebSocket transport support for custom MQTT brokers from the Observer web panel and CLI."
changes:
- type: added
area: mqtt
text: "Added TCP/WSS transport selection for custom MQTT brokers while keeping custom broker authentication to username and password only."
- type: fixed
area: mqtt
text: "Verified custom MQTT WSS connections with the ESP-IDF x509 root CA bundle and the fixed `/mqtt` WebSocket path."
- type: fixed
area: mqtt
text: "Configured custom MQTT WSS using a full `wss://host:port/mqtt` URI so ESP-MQTT handles the WebSocket connection consistently."
- type: changed
area: cli
text: "Updated `get mqtt.status` to show the custom MQTT transport and state, for example `custom:wss:up`."
- type: docs
area: docs
text: "Documented custom MQTT TCP/WSS configuration in the web panel and custom CLI guides."
breaking_changes: []
- track: observer-posadmesh
version: "2026.6.4"
tag: "observer-eastmesh-v2026.6.4"
date: "2026-06-23"
previous_version: "2026.6.3"
summary: "Replaces the retired LetsMesh brokers with the MeshMapper broker and reworks broker selection into Primary and Secondary slots."
changes:
- type: added
area: mqtt
text: "Added the `meshmapper` curated broker (`wss://mqtt.meshmapper.net:443/mqtt`) using WSS, verified TLS, and MeshCore JWT authentication with the broker host as the token audience."
- type: added
area: cli
text: "Added `get mqtt.meshmapper` and `set mqtt.meshmapper on|off` to toggle the MeshMapper broker."
- type: changed
area: mqtt
text: "Retired the unmaintained LetsMesh EU/US brokers: they remain selectable but are marked retired, and saved selections are cleared once on upgrade so dead brokers stop retrying."
- type: changed
area: web
text: "Replaced the EastMesh and LetsMesh sliders and the custom MQTT toggle with Primary and Secondary broker dropdowns that enforce the two-broker maximum and reveal custom host, username, and password fields when Custom is selected."
- type: changed
area: cli
text: "Shortened `get mqtt.status` to report the two active broker slots as `p:<broker>:<state>` and `s:<broker>:<state>` so the reply stays within the LoRa text limit."
- type: docs
area: docs
text: "Updated the README, web panel, and custom CLI guides for MeshMapper and the Primary/Secondary broker layout."
breaking_changes:
- "`get mqtt.status` output changed from per-broker fields to `p:`/`s:` broker slots; anything parsing the previous format must be updated."
- "Saved LetsMesh EU/US broker selections are cleared once on upgrade; re-enable a broker such as MeshMapper if a second uplink is required."
- track: observer-posadmesh
version: "2026.6.5"
tag: "observer-eastmesh-v2026.6.5"
date: "2026-06-26"
previous_version: "2026.6.4"
summary: "Adds the Waev curated MQTT broker and makes the Custom MQTT settings panel full width when Custom is selected."
changes:
- type: added
area: mqtt
text: "Added the `waev` curated broker (`wss://mqtt.waev.app:443/mqtt`) using WSS, verified TLS, and MeshCore JWT authentication with the broker host as the token audience."
- type: added
area: cli
text: "Added `get mqtt.waev` and `set mqtt.waev on|off` to toggle the Waev broker."
- type: added
area: mqtt
text: "Added per-broker JWT token lifetimes so Waev receives a 1-hour token to match its shorter maximum token lifetime."
- type: fixed
area: web
text: "Made the Custom MQTT settings panel span the full width of the MQTT Servers card when Custom is selected."
- type: docs
area: docs
text: "Documented the Waev broker in the README and custom CLI guides."
breaking_changes: []
- track: observer-posadmesh
version: "2026.6.6"
tag: "observer-eastmesh-v2026.6.6"
date: "2026-06-27"
previous_version: "2026.6.5"
summary: "Adds cumulative packet counters to the MQTT status payload so brokers receive radio TX/RX totals."
changes:
- type: added
area: mqtt
text: "Added `packets_sent` and `packets_received` counters to the MQTT `status` payload `stats` object, reporting cumulative radio TX/RX packet totals to align with the Waev/MeshMapper status schema."
breaking_changes: []
- track: observer-posadmesh
version: "2026.7.0"
tag: "observer-eastmesh-v2026.7.0"
date: "2026-07-19"
previous_version: "2026.6.6"
summary: "Syncs Observer firmware with the latest upstream MeshCore dev changes, realigns saved settings storage with upstream, and restores EastMesh/MeshMapper broker TLS trust."
changes:
- type: changed
area: upstream
text: "Merged upstream MeshCore dev updates including power-off/deep-sleep improvements, SX1262 LDO support, hardware channel-activity detection, radio gain fixes, and board/platform fixes."
- type: fixed
area: prefs
text: "Realigned saved node settings to upstream byte offsets and moved EastMesh-specific fields behind a reserved gap so future upstream syncs no longer shift or corrupt them."
- type: fixed
area: mqtt
text: "Restored EastMesh and MeshMapper broker TLS trust after mqtt2.eastmesh.au moved from Let's Encrypt to a Google Trust Services certificate."
- type: changed
area: build
text: "Bumped CI build and docs workflows to Python 3.13."
breaking_changes:
- "The saved settings layout changed; devices upgrading from 2026.6.6 or earlier may need EastMesh-specific settings (such as fan control and bridge peer) and recently added radio settings reconfigured."
- track: observer-posadmesh
version: "2026.8.0"
tag: "observer-eastmesh-v2026.8.0"
date: "2026-08-09"
previous_version: "2026.7.0"
summary: "Updates Observer firmware to upstream MeshCore v1.17.0 with the new key-based settings format and fixes the web panel becoming unreachable after long uptimes."
changes:
- type: changed
area: upstream
text: "Merged upstream MeshCore v1.17.0 including new board support, ethernet interface groundwork, LR2021 radio support, display and UI improvements, and platform fixes."
- type: changed
area: prefs
text: "Moved saved node settings to upstream's new key-based `prefs.json` format; existing settings, including EastMesh fan control and bridge peer configuration, are migrated automatically on first boot."
- type: fixed
area: web
text: "Fixed the web panel refusing connections (browser `PR_CONNECT_RESET_ERROR`) after long uptimes by evicting stale keep-alive connections instead of letting vanished clients permanently occupy the connection pool."
breaking_changes:
- "Saved settings move to the new `prefs.json` format on first boot; downgrading to earlier firmware afterwards reverts the device to the old (pre-migration) settings file."
- track: observer-posadmesh
version: "2026.8.1"
tag: "observer-eastmesh-v2026.8.1"
date: "2026-08-09"
previous_version: "2026.8.0"
summary: "Hardens T-Beam S3 Supreme display bring-up so a failed boot-time OLED probe can no longer crash-loop the node."
changes:
- type: fixed
area: board
text: "Restored the proven T-Beam S3 Supreme SH1106 bring-up order (initialise the display before probing the bus, which can NAK cold probes on this board) so the OLED reliably comes up at boot."
- type: fixed
area: board
text: "Made a failed or absent SH1106 display boot the node headless instead of crash-looping: display operations are now safe no-ops when the boot-time initialisation did not succeed."
breaking_changes: []
- track: observer-posadmesh
version: "2026.8.2"
tag: "observer-eastmesh-v2026.8.2"
date: "2026-08-15"
previous_version: "2026.8.1"
summary: "Adds a Wi-Fi gateway connectivity watchdog so observers recover from APs that stay associated after losing their uplink, and updates to upstream MeshCore v1.17.1."
changes:
- type: added
area: wifi
text: "Added a gateway connectivity watchdog: while connected, the node ARP-probes its gateway every 30 seconds, and if the gateway stays silent for 3 minutes it forces a full disconnect and rescan so the node can roam to a healthy AP, backing off up to 48 minutes between attempts while the outage persists."
- type: added
area: cli
text: "Added `wifi reconnect` to drop the current association and rejoin from a full channel scan, for nodes that report connected but are unreachable over the network."
- type: changed
area: cli
text: "Extended `get wifi.status` with gateway health (`gw:ok|lost`) and the watchdog reconnect count (`wd:<n>`), which the web panel now also shows."
- type: changed
area: upstream
text: "Merged upstream MeshCore v1.17.1 including improved reply routing (direct requests reply over known return paths, and replies fall back to the default scope when the request scope is unknown), LR2021 radio improvements, and board/platform fixes."
- type: fixed
area: radio
text: "Kept the user-configured RX boosted gain setting after an automatic gain control reset instead of reverting to the compiled-in default (SX126x radios)."
- type: fixed
area: board
text: "Adopted upstream's SH1106 display address fallback (0x3C/0x3D) so board revisions with the other SA0 strap setting still get a working display, while keeping the EastMesh T-Beam S3 Supreme bring-up order and headless fallback."
breaking_changes: []
- track: observer-posadmesh
version: "2026.8.3"
tag: "observer-eastmesh-v2026.8.3"
date: "2026-08-23"
previous_version: "2026.8.2"
summary: "Fixes the web panel going unreachable after long uptimes due to internal heap fragmentation, adds web panel self-healing and heap-health CLI counters, fixes the stats page Channel/Gateway cells, and keeps the T-Beam 1W external PA ramp time from being reset by TX power changes."
changes:
- type: fixed
area: web
text: "Fixed the web panel becoming unreachable after days of uptime while LoRa and MQTT kept working: browser page-load bursts were evicting live HTTPS sessions and forcing repeated TLS handshakes, fragmenting internal RAM until no handshake could be allocated. One-shot responses (pages, favicon, login, redirect, 401s) now release their socket immediately, while the authenticated API connection keeps keep-alive."
- type: added
area: web
text: "Added web panel self-healing: the HTTPS server now refuses to start without enough internal heap headroom (retrying every 15 seconds), and restarts itself when idle if the largest free block shrinks below what a TLS handshake needs."
- type: changed
area: cli
text: "Extended `get web.status` with `heals:<n>` and `deferred:<n>`, and `get mqtt.status` with `leaked:<n>` (MQTT clients abandoned after a heap-integrity failure), so heap-related failures are visible over LoRa."
- type: fixed
area: web
text: "Fixed the Channel and Gateway cells on the web panel stats page always showing `--`; the stats summary now carries the Wi-Fi channel, gateway health, and watchdog reconnect count."
- type: fixed
area: radio
text: "Fixed the LilyGo T-Beam 1W external PA ramp time being silently reset from 800 µs back to RadioLib's 200 µs default whenever TX power was applied (at boot and via `set tx`); every power change now re-applies the 800 µs ramp the external PA requires."
- type: added
area: tools
text: "Added `eastmesh-tools/web-heap-check.sh` to read heap and service health over the HTTPS API and optionally stress the web panel with browser-style bursts."
breaking_changes: []
- track: observer-posadmesh
version: "2026.10.0"
tag: "observer-posadmesh-v2026.10.0"
date: "2026-10-07"
previous_version: "2026.8.3"
summary: "Полный рефакторинг под PosadMesh: переименованы папки, скрипты, треки и теги, документация переведена на русский, удалены брокеры waev/meshmapper/letsmesh, репозиторий переехал на git.meshinfo.ru с локальной сборкой релизов, база обновлена до upstream MeshCore v1.17.1."
changes:
- type: changed
area: upstream
text: "База прошивки обновлена до upstream MeshCore v1.17.1."
- type: changed
area: release
text: "Проект целиком переименован в PosadMesh: папки и скрипты (`eastmesh-docs` → `posadmesh-docs`, `eastmesh-tools` → `posadmesh-tools`, `eastmesh-build.sh` → `posadmesh-build.sh`), треки релизов (`observer-eastmesh*` → `observer-posadmesh*`), форматы тегов (`observer-posadmesh-v*`, `observer-posadmesh-bridge-espnow-v*`, `observer-posadmesh-bridge-mqtt-v*`), суффикс версии сборки (`-posadmesh-`) и переменная версии релиза (`EASTMESH_VERSION` → `POSADMESH_VERSION`)."
- type: docs
area: docs
text: "Документация переведена на русский язык: `posadmesh-docs/*.md`, `README.md`, `RELEASE.md` и `AGENTS.md`. Команды, их вывод, код, пути и идентификаторы оставлены без перевода."
- type: changed
area: release
text: "Репозиторий переехал на <https://git.meshinfo.ru/shade/MeshCore-Posadmesh>, workflow GitHub Actions удалены: прошивки собираются локально через `posadmesh-build.sh`, а теги и релизы создаются вручную в веб-интерфейсе git.meshinfo.ru."
- type: changed
area: mqtt
text: "Удалены брокеры `waev`, `meshmapper` и `letsmesh-eu`/`letsmesh-us` — из прошивки, веб-панели и документации; остались `mqtt.meshcoretel` и `mqtt.custom`. Сохранённые выборы удалённых брокеров сбрасываются один раз при обновлении."
- type: fixed
area: cli
text: "Исправлена команда `set mqtt.meshcoretel on|off`: обработчик сравнивался со строкой `set mqtt.mqtt.meshcoretel `, из-за чего команда не срабатывала. Заодно алиас `set mqtt.meshcoretel.ru on|off` читает значение по правильному смещению, а не всегда выключает брокер."
- type: fixed
area: mqtt
text: "Исправлено молчаливое отключение собственного брокера: `setEndpointEnabled` маскировал сохранённую маску брокеров значением `0x07` и терял бит custom при переключении любого другого брокера."
- type: fixed
area: web
text: "Исправлена разметка страницы логина: незакрытый тег `</div` съедал абзац-подсказку про пароль администратора, из-за чего подсказка теряла оформление."
- type: fixed
area: web
text: "Исправлен разбор дерева регионов: завершающая буква `F` в имени региона срезалась, из-за чего `region allowf`, `region denyf` и `region remove` не работали для таких имён."
breaking_changes:
- "Формат тегов меняется на `observer-posadmesh-*`: прежние теги `observer-eastmesh-*` больше ничего не запускают и остаются только как история."
- "`EASTMESH_VERSION` переименована в `POSADMESH_VERSION`: локальные скрипты со старым именем соберут версию без суффикса PosadMesh."
- "Команды `mqtt.meshmapper`, `mqtt.waev` и `mqtt.letsmesh-*` удалены; сохранённые выборы этих брокеров сбрасываются при обновлении."
- "Документация больше не публикуется отдельным сайтом и читается в веб-интерфейсе git.meshinfo.ru."
- track: observer-posadmesh-bridge-espnow
version: "2026.5.1"
tag: "observer-eastmesh-bridge-espnow-v2026.5.1"
date: "2026-05-23"
previous_version: "1.4.0"
summary: "Renames the EastMesh MQTT bridge release track and PlatformIO targets to Observer ESP-NOW naming."
changes:
- type: changed
area: release
text: "Renamed the EastMesh MQTT bridge release tag format from `repeater-mqtt-bridge-eastmesh-v*` to `observer-eastmesh-bridge-espnow-v*`."
- type: changed
area: build
text: "Renamed `*_repeater_mqtt_bridge` PlatformIO environments and release artifact prefixes to `*_repeater_observer_espnow`."
- type: docs
area: docs
text: "Updated EastMesh release, local build, board, and CLI documentation to use Observer ESP-NOW naming."
breaking_changes:
- "The EastMesh MQTT bridge release tag format and PlatformIO target suffix changed to Observer ESP-NOW naming."
- track: observer-posadmesh-bridge-espnow
version: "2026.6.0"
tag: "observer-eastmesh-bridge-espnow-v2026.6.0"
date: "2026-06-03"
previous_version: "2026.5.1"
summary: "Updates Observer ESP-NOW bridge firmware with the latest upstream MeshCore dev changes plus EastMesh radio, web, MQTT, and board support fixes."
changes:
- type: added
area: mqtt
text: "Added configurable custom MQTT broker support alongside the curated EastMesh and LetsMesh endpoints."
- type: added
area: build
text: "Added Station G3 ESP32 Observer ESP-NOW firmware targets."
- type: added
area: cli
text: "Added `flood.max.unscoped` so unscoped flood packets can use a separate hop limit from scoped flood traffic."
- type: fixed
area: web
text: "Preserved web panel sessions across Wi-Fi reconnects and hardened OTA startup from the local web panel."
- type: fixed
area: radio
text: "Hardened LilyGo T-Beam 1W radio setup and restored the missing SX126x register patch."
- type: changed
area: upstream
text: "Merged upstream MeshCore dev updates including sensor handling, RAK4631 BME680/BSEC support, documentation refreshes, and board/platform fixes."
breaking_changes: []
- track: observer-posadmesh-bridge-espnow
version: "2026.6.1"
tag: "observer-eastmesh-bridge-espnow-v2026.6.1"
date: "2026-06-07"
previous_version: "2026.6.0"
summary: "Updates Observer ESP-NOW bridge firmware to upstream MeshCore v1.16.0 with flood-advert controls and board/platform fixes."
changes:
- type: added
area: cli
text: "Added `flood.max.advert` so flooded advert packets can use their own hop limit."
- type: changed
area: upstream
text: "Merged upstream MeshCore v1.16.0 dev updates including companion UI, board, radio, power-saving, documentation, and platform fixes."
- type: docs
area: docs
text: "Updated EastMesh custom CLI docs for the new `flood.max.advert` command."
breaking_changes: []
- track: observer-posadmesh-bridge-espnow
version: "2026.6.2"
tag: "observer-eastmesh-bridge-espnow-v2026.6.2"
date: "2026-06-07"
previous_version: "2026.6.1"
summary: "Applies the Observer boot, Wi-Fi/OTA persistence, telemetry, archive, and web-panel maintenance fixes to ESP-NOW bridge builds."
changes:
- type: fixed
area: board
text: "Fixed LilyGo T-Beam S3 Supreme BME280 detection and live telemetry by using the board-detected address, stop-based I2C reads, and board-specific I2C bus recovery before samples."
- type: fixed
area: web
text: "Changed live `/stats` sensor values to use the main-loop sensor snapshot instead of reading I2C sensors from the web request handler."
- type: fixed
area: wifi
text: "Improved boot-time Wi-Fi startup by starting Wi-Fi earlier on T-Beam S3 Supreme, remembering the last connected AP channel, and falling back to full scan if that channel is stale."
- type: fixed
area: wifi
text: "Added NVS-backed Wi-Fi preference recovery so SSID and password survive OTA updates even if the filesystem preference file is lost."
- type: fixed
area: wifi
text: "Hardened Wi-Fi retry handling so scan-mode connects are not interrupted early and failed attempts reset the ESP32 station state before retrying."
- type: fixed
area: cli
text: "Fixed `set wifi.powersaving none` returning an error when Wi-Fi power saving was already disabled."
- type: fixed
area: archive
text: "Bounded archive neighbour restore and history reads so large SD-card archive files no longer slow boot unnecessarily."
- type: added
area: web
text: "Added a web-panel and CLI SD purge action for clearing archive contents from supported SD-card targets."
- type: fixed
area: web
text: "Hardened OTA startup by binding before reporting success and falling back to alternate ports when port 80 is still being released."
breaking_changes: []
- track: observer-posadmesh-bridge-espnow
version: "2026.6.3"
tag: "observer-eastmesh-bridge-espnow-v2026.6.3"
date: "2026-06-09"
previous_version: "2026.6.2"
summary: "Adds secure WebSocket transport support for custom MQTT brokers in Observer ESP-NOW bridge builds."
changes:
- type: added
area: mqtt
text: "Added TCP/WSS transport selection for custom MQTT brokers while keeping custom broker authentication to username and password only."
- type: fixed
area: mqtt
text: "Verified custom MQTT WSS connections with the ESP-IDF x509 root CA bundle and the fixed `/mqtt` WebSocket path."
- type: fixed
area: mqtt
text: "Configured custom MQTT WSS using a full `wss://host:port/mqtt` URI so ESP-MQTT handles the WebSocket connection consistently."
- type: changed
area: cli
text: "Updated `get mqtt.status` to show the custom MQTT transport and state, for example `custom:wss:up`."
- type: docs
area: docs
text: "Documented custom MQTT TCP/WSS configuration in the web panel and custom CLI guides."
breaking_changes: []
- track: observer-posadmesh-bridge-espnow
version: "2026.6.4"
tag: "observer-eastmesh-bridge-espnow-v2026.6.4"
date: "2026-06-23"
previous_version: "2026.6.3"
summary: "Replaces the retired LetsMesh brokers with the MeshMapper broker and reworks broker selection into Primary and Secondary slots in Observer ESP-NOW bridge builds."
changes:
- type: added
area: mqtt
text: "Added the `meshmapper` curated broker (`wss://mqtt.meshmapper.net:443/mqtt`) using WSS, verified TLS, and MeshCore JWT authentication with the broker host as the token audience."
- type: added
area: cli
text: "Added `get mqtt.meshmapper` and `set mqtt.meshmapper on|off` to toggle the MeshMapper broker."
- type: changed
area: mqtt
text: "Retired the unmaintained LetsMesh EU/US brokers: they remain selectable but are marked retired, and saved selections are cleared once on upgrade so dead brokers stop retrying."
- type: changed
area: web
text: "Replaced the EastMesh and LetsMesh sliders and the custom MQTT toggle with Primary and Secondary broker dropdowns that enforce the two-broker maximum and reveal custom host, username, and password fields when Custom is selected."
- type: changed
area: cli
text: "Shortened `get mqtt.status` to report the two active broker slots as `p:<broker>:<state>` and `s:<broker>:<state>` so the reply stays within the LoRa text limit."
- type: docs
area: docs
text: "Updated the README, web panel, and custom CLI guides for MeshMapper and the Primary/Secondary broker layout."
breaking_changes:
- "`get mqtt.status` output changed from per-broker fields to `p:`/`s:` broker slots; anything parsing the previous format must be updated."
- "Saved LetsMesh EU/US broker selections are cleared once on upgrade; re-enable a broker such as MeshMapper if a second uplink is required."
- track: observer-posadmesh-bridge-espnow
version: "2026.6.5"
tag: "observer-eastmesh-bridge-espnow-v2026.6.5"
date: "2026-06-26"
previous_version: "2026.6.4"
summary: "Adds the Waev curated MQTT broker and makes the Custom MQTT settings panel full width in Observer ESP-NOW bridge builds."
changes:
- type: added
area: mqtt
text: "Added the `waev` curated broker (`wss://mqtt.waev.app:443/mqtt`) using WSS, verified TLS, and MeshCore JWT authentication with the broker host as the token audience."
- type: added
area: cli
text: "Added `get mqtt.waev` and `set mqtt.waev on|off` to toggle the Waev broker."
- type: added
area: mqtt
text: "Added per-broker JWT token lifetimes so Waev receives a 1-hour token to match its shorter maximum token lifetime."
- type: fixed
area: web
text: "Made the Custom MQTT settings panel span the full width of the MQTT Servers card when Custom is selected."
- type: docs
area: docs
text: "Documented the Waev broker in the README and custom CLI guides."
breaking_changes: []
- track: observer-posadmesh-bridge-espnow
version: "2026.6.6"
tag: "observer-eastmesh-bridge-espnow-v2026.6.6"
date: "2026-06-27"
previous_version: "2026.6.5"
summary: "Adds cumulative packet counters to the MQTT status payload so brokers receive radio TX/RX totals."
changes:
- type: added
area: mqtt
text: "Added `packets_sent` and `packets_received` counters to the MQTT `status` payload `stats` object, reporting cumulative radio TX/RX packet totals to align with the Waev/MeshMapper status schema."
breaking_changes: []
- track: observer-posadmesh-bridge-espnow
version: "2026.7.0"
tag: "observer-eastmesh-bridge-espnow-v2026.7.0"
date: "2026-07-19"
previous_version: "2026.6.6"
summary: "Syncs Observer ESP-NOW bridge firmware with the latest upstream MeshCore dev changes, realigns saved settings storage with upstream, and restores EastMesh/MeshMapper broker TLS trust."
changes:
- type: changed
area: upstream
text: "Merged upstream MeshCore dev updates including power-off/deep-sleep improvements, SX1262 LDO support, hardware channel-activity detection, radio gain fixes, and board/platform fixes."
- type: fixed
area: prefs
text: "Realigned saved node settings to upstream byte offsets and moved EastMesh-specific fields behind a reserved gap so future upstream syncs no longer shift or corrupt them."
- type: fixed
area: mqtt
text: "Restored EastMesh and MeshMapper broker TLS trust after mqtt2.eastmesh.au moved from Let's Encrypt to a Google Trust Services certificate."
- type: changed
area: build
text: "Bumped CI build and docs workflows to Python 3.13."
breaking_changes:
- "The saved settings layout changed; devices upgrading from 2026.6.6 or earlier may need EastMesh-specific settings (such as fan control and bridge peer) and recently added radio settings reconfigured."
- track: observer-posadmesh-bridge-espnow
version: "2026.8.0"
tag: "observer-eastmesh-bridge-espnow-v2026.8.0"
date: "2026-08-09"
previous_version: "2026.7.0"
summary: "Updates Observer ESP-NOW bridge firmware to upstream MeshCore v1.17.0 with the new key-based settings format and fixes the web panel becoming unreachable after long uptimes."
changes:
- type: changed
area: upstream
text: "Merged upstream MeshCore v1.17.0 including new board support, ethernet interface groundwork, LR2021 radio support, display and UI improvements, and platform fixes."
- type: changed
area: prefs
text: "Moved saved node settings to upstream's new key-based `prefs.json` format; existing settings, including EastMesh fan control and bridge peer configuration, are migrated automatically on first boot."
- type: fixed
area: web
text: "Fixed the web panel refusing connections (browser `PR_CONNECT_RESET_ERROR`) after long uptimes by evicting stale keep-alive connections instead of letting vanished clients permanently occupy the connection pool."
breaking_changes:
- "Saved settings move to the new `prefs.json` format on first boot; downgrading to earlier firmware afterwards reverts the device to the old (pre-migration) settings file."
- track: observer-posadmesh-bridge-espnow
version: "2026.8.1"
tag: "observer-eastmesh-bridge-espnow-v2026.8.1"
date: "2026-08-09"
previous_version: "2026.8.0"
summary: "Hardens T-Beam S3 Supreme display bring-up so a failed boot-time OLED probe can no longer crash-loop the node."
changes:
- type: fixed
area: board
text: "Restored the proven T-Beam S3 Supreme SH1106 bring-up order (initialise the display before probing the bus, which can NAK cold probes on this board) so the OLED reliably comes up at boot."
- type: fixed
area: board
text: "Made a failed or absent SH1106 display boot the node headless instead of crash-looping: display operations are now safe no-ops when the boot-time initialisation did not succeed."
breaking_changes: []
- track: observer-posadmesh-bridge-espnow
version: "2026.8.2"
tag: "observer-eastmesh-bridge-espnow-v2026.8.2"
date: "2026-08-15"
previous_version: "2026.8.1"
summary: "Adds the Wi-Fi gateway connectivity watchdog to Observer ESP-NOW bridge builds and updates to upstream MeshCore v1.17.1."
changes:
- type: added
area: wifi
text: "Added a gateway connectivity watchdog: while connected, the node ARP-probes its gateway every 30 seconds, and if the gateway stays silent for 3 minutes it forces a full disconnect and rescan so the node can roam to a healthy AP, backing off up to 48 minutes between attempts while the outage persists."
- type: added
area: cli
text: "Added `wifi reconnect` to drop the current association and rejoin from a full channel scan, for nodes that report connected but are unreachable over the network."
- type: changed
area: cli
text: "Extended `get wifi.status` with gateway health (`gw:ok|lost`) and the watchdog reconnect count (`wd:<n>`), which the web panel now also shows."
- type: changed
area: upstream
text: "Merged upstream MeshCore v1.17.1 including improved reply routing (direct requests reply over known return paths, and replies fall back to the default scope when the request scope is unknown), LR2021 radio improvements, and board/platform fixes."
- type: fixed
area: radio
text: "Kept the user-configured RX boosted gain setting after an automatic gain control reset instead of reverting to the compiled-in default (SX126x radios)."
- type: fixed
area: board
text: "Adopted upstream's SH1106 display address fallback (0x3C/0x3D) so board revisions with the other SA0 strap setting still get a working display, while keeping the EastMesh T-Beam S3 Supreme bring-up order and headless fallback."
breaking_changes: []
- track: observer-posadmesh-bridge-espnow
version: "2026.8.3"
tag: "observer-eastmesh-bridge-espnow-v2026.8.3"
date: "2026-08-23"
previous_version: "2026.8.2"
summary: "Fixes the web panel going unreachable after long uptimes due to internal heap fragmentation, adds web panel self-healing and heap-health CLI counters, fixes the stats page Channel/Gateway cells, and keeps the T-Beam 1W external PA ramp time from being reset by TX power changes."
changes:
- type: fixed
area: web
text: "Fixed the web panel becoming unreachable after days of uptime while LoRa and MQTT kept working: browser page-load bursts were evicting live HTTPS sessions and forcing repeated TLS handshakes, fragmenting internal RAM until no handshake could be allocated. One-shot responses (pages, favicon, login, redirect, 401s) now release their socket immediately, while the authenticated API connection keeps keep-alive."
- type: added
area: web
text: "Added web panel self-healing: the HTTPS server now refuses to start without enough internal heap headroom (retrying every 15 seconds), and restarts itself when idle if the largest free block shrinks below what a TLS handshake needs."
- type: changed
area: cli
text: "Extended `get web.status` with `heals:<n>` and `deferred:<n>`, and `get mqtt.status` with `leaked:<n>` (MQTT clients abandoned after a heap-integrity failure), so heap-related failures are visible over LoRa."
- type: fixed
area: web
text: "Fixed the Channel and Gateway cells on the web panel stats page always showing `--`; the stats summary now carries the Wi-Fi channel, gateway health, and watchdog reconnect count."
- type: fixed
area: radio
text: "Fixed the LilyGo T-Beam 1W external PA ramp time being silently reset from 800 µs back to RadioLib's 200 µs default whenever TX power was applied (at boot and via `set tx`); every power change now re-applies the 800 µs ramp the external PA requires."
- type: added
area: tools
text: "Added `eastmesh-tools/web-heap-check.sh` to read heap and service health over the HTTPS API and optionally stress the web panel with browser-style bursts."
breaking_changes: []
- track: observer-posadmesh-bridge-espnow
version: "2026.10.0"
tag: "observer-posadmesh-bridge-espnow-v2026.10.0"
date: "2026-10-07"
previous_version: "2026.8.3"
summary: "Полный рефакторинг под PosadMesh в сборках обсервера с ESP-NOW мостом: переименованы папки, скрипты, треки и теги, документация переведена на русский, удалены брокеры waev/meshmapper/letsmesh, репозиторий переехал на git.meshinfo.ru с локальной сборкой релизов, база обновлена до upstream MeshCore v1.17.1."
changes:
- type: changed
area: upstream
text: "База прошивки обновлена до upstream MeshCore v1.17.1."
- type: changed
area: release
text: "Проект целиком переименован в PosadMesh: папки и скрипты (`eastmesh-docs` → `posadmesh-docs`, `eastmesh-tools` → `posadmesh-tools`, `eastmesh-build.sh` → `posadmesh-build.sh`), треки релизов (`observer-eastmesh*` → `observer-posadmesh*`), форматы тегов (`observer-posadmesh-v*`, `observer-posadmesh-bridge-espnow-v*`, `observer-posadmesh-bridge-mqtt-v*`), суффикс версии сборки (`-posadmesh-`) и переменная версии релиза (`EASTMESH_VERSION` → `POSADMESH_VERSION`)."
- type: docs
area: docs
text: "Документация переведена на русский язык: `posadmesh-docs/*.md`, `README.md`, `RELEASE.md` и `AGENTS.md`. Команды, их вывод, код, пути и идентификаторы оставлены без перевода."
- type: changed
area: release
text: "Репозиторий переехал на <https://git.meshinfo.ru/shade/MeshCore-Posadmesh>, workflow GitHub Actions удалены: прошивки собираются локально через `posadmesh-build.sh`, а теги и релизы создаются вручную в веб-интерфейсе git.meshinfo.ru."
- type: changed
area: mqtt
text: "Удалены брокеры `waev`, `meshmapper` и `letsmesh-eu`/`letsmesh-us` — из прошивки, веб-панели и документации; остались `mqtt.meshcoretel` и `mqtt.custom`. Сохранённые выборы удалённых брокеров сбрасываются один раз при обновлении."
- type: fixed
area: cli
text: "Исправлена команда `set mqtt.meshcoretel on|off`: обработчик сравнивался со строкой `set mqtt.mqtt.meshcoretel `, из-за чего команда не срабатывала. Заодно алиас `set mqtt.meshcoretel.ru on|off` читает значение по правильному смещению, а не всегда выключает брокер."
- type: fixed
area: mqtt
text: "Исправлено молчаливое отключение собственного брокера: `setEndpointEnabled` маскировал сохранённую маску брокеров значением `0x07` и терял бит custom при переключении любого другого брокера."
- type: fixed
area: web
text: "Исправлена разметка страницы логина: незакрытый тег `</div` съедал абзац-подсказку про пароль администратора, из-за чего подсказка теряла оформление."
- type: fixed
area: web
text: "Исправлен разбор дерева регионов: завершающая буква `F` в имени региона срезалась, из-за чего `region allowf`, `region denyf` и `region remove` не работали для таких имён."
breaking_changes:
- "Формат тегов меняется на `observer-posadmesh-*`: прежние теги `observer-eastmesh-*` больше ничего не запускают и остаются только как история."
- "`EASTMESH_VERSION` переименована в `POSADMESH_VERSION`: локальные скрипты со старым именем соберут версию без суффикса PosadMesh."
- "Команды `mqtt.meshmapper`, `mqtt.waev` и `mqtt.letsmesh-*` удалены; сохранённые выборы этих брокеров сбрасываются при обновлении."
- "Документация больше не публикуется отдельным сайтом и читается в веб-интерфейсе git.meshinfo.ru."