diff --git a/CHANGELOG.md b/CHANGELOG.md index a2c9131..e79ede2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,28 @@ # CHANGELOG - - All notable changes to MeshCore GUI are documented in this file. Format follows [Keep a Changelog](https://keepachangelog.com/) and [Semantic Versioning](https://semver.org/). --- -<<<<<<< HEAD +## [1.13.4] - 2026-03-12 — Room Server Login & Receive Reliability + +### Changed +- 🔄 `meshcore_gui/ble/commands.py` — Room login success now refreshes archived room history immediately after `LOGIN_SUCCESS`, so the room panel is populated deterministically right after a successful login +- 🔄 `meshcore_gui/ble/events.py` — `CONTACT_MSG_RECV` with `txt_type == 2` is now always treated as a Room Server message, even when the `signature` field is absent; the author name falls back gracefully instead of routing the message through the normal DM path +- 🔄 `meshcore_gui/ble/worker.py` — The global `LOGIN_SUCCESS` subscriber now also synchronizes room login state into `SharedData` and refreshes room history, so UI state no longer depends solely on the command-side waiter winning the event timing race +- 🔄 `meshcore_gui/config.py` — Version bumped to `1.13.4` + +### Fixed +- 🛠**Initial room login could remain pending or feel unreliable** — UI state now also updates from the subscribed `LOGIN_SUCCESS` event, not only from the command coroutine waiting for the same event +- 🛠**Room messages could be missed when `txt_type == 2` arrived without `signature`** — such packets are now still classified as room traffic and shown in the Room Server panel +- 🛠**Room history refresh after login was timing-sensitive** — history is now reloaded both from the command success path and from the subscribed login-success callback + +### Impact +- More reliable first login behaviour for Room Server panels +- Better chance that room history and newly arriving room messages show up immediately after login +- No intended breaking changes outside the Room Server receive/login flow + +--- ## [1.13.3] - 2026-03-12 — Active Panel Timer Gating ### Changed @@ -32,34 +47,15 @@ Format follows [Keep a Changelog](https://keepachangelog.com/) and [Semantic Ver ## [1.13.2] - 2026-03-11 — Map Display Bugfix ### Fixed -- 🛠**MAP panel blank when contacts list is empty at startup** — dashboard update loop - had two separate conditional map-update blocks that both silently stopped firing after - tick 1 when `data['contacts']` was empty. Map panel received no further snapshots and - remained blank indefinitely. -- 🛠**Leaflet map initialized on hidden (zero-size) container** — `processPending` in - the browser runtime called `L.map()` on the host element while it was still - `display:none` (Vue v-show, panel not yet visible). This produced a broken 0×0 map - that never recovered because `ensureMap` returned the cached broken state on all - subsequent calls. Fixed by adding a `clientWidth/clientHeight` guard in `ensureMap`: - initialization is deferred until the host has real dimensions. -- 🛠**Route map container had no height** — `route_page.py` used the Tailwind class - `h-96` for the Leaflet host `