Files
wadamesh/src/helpers
Kaj SchittecatandClaude Opus 5 f931fdfeda touch: Known regions back-out (#449), idle power-save gate (#450), review follow-ups
Known regions (#449, DenRalle on Tanmatsu): s_regions_modal was in no popup
registry at all. Without a row the Back ladder never peels it, so the page
stays on screen, and the open-popup COUNT stays zero, so whatever you open
next opens underneath it. Both halves of the report ("screen remains
visible", "pages open only in the background"), one missing line.

Idle power-save (#450, jrote1): the Battery page in the report shows the
gate blocked on "Wi-Fi on" with Wi-Fi disabled and cycles stuck at 0.
tsWifiOff() ANDed the wifiConfigGetRadioEnabled() pref with the real radio
state, and that pref DEFAULTS TO ENABLED when its NVS key was never written
-- so anyone who had not explicitly toggled Wi-Fi in this firmware read as
"Wi-Fi on" permanently. The gate is asking whether the modem draws power,
and WiFi.getMode() == WIFI_OFF answers exactly that on its own.

The other half of the same bug is in main.cpp: the power-down ran only if
wifi_started, but a scan or the version check can bring STA up without
going through that state machine, and then disabling Wi-Fi skipped
mode(WIFI_OFF) and left the modem running. getMode() != WIFI_OFF proves the
driver is inited, which is what the guard actually wanted to test, so it
closes the leak without reintroducing the low-heap esp_wifi_init crash the
original comment guards against. The block is one-shot behind
wifiConfigConsumeApplyRequest(), not per-loop.

Follow-ups from reviewing the merged PRs:

- #457 moved the Lua app page to the slim bar, which exposed that bar_h was
  measured BEFORE appPageBegin* installs the chrome -- so the body was sized
  against the OUTGOING page's bar. Install first, then measure (#236 again,
  one step earlier).

- #453 makes /meshcore-*.json downloadable, and those carry "private_key"
  plus every channel secret. The transfer is opt-in, LAN-only and rate
  limited (3 tries, 30 s lockout), so the surface is sound -- but it is
  plain HTTP, so say so on the page and flag backup rows in the list.

Reported-by: DenRalle, jrote1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 14:06:59 +02:00
..
2026-08-14 15:57:08 -04:00