Skip to content

MeshCore bearer: settings UI + device-control status/reset (#159) - #164

Merged
M0LTE merged 1 commit into
masterfrom
meshcore-settings-ui
Jul 1, 2026
Merged

MeshCore bearer: settings UI + device-control status/reset (#159)#164
M0LTE merged 1 commit into
masterfrom
meshcore-settings-ui

Conversation

@M0LTE

@M0LTE M0LTE commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

Makes the MeshCore bearer operable from the dashboard (#159), not just DAPPS_MESHCORE_* env vars.

What

  • Settings page gets a MeshCore bearer panel with every option (enable, serial port, region preset, TX power, channel slot/name/PSK, node name, airtime budget, compression, congestion backoff, LBT guard, reliability) — rendered from and saved back through /Config.
  • Live status line (link state, freq/SF/CR, occupancy, delivered, reliability confirmed/pending, resets) polling GET /MeshCore/status, plus a Reset radio button (POST /MeshCore/reset) that drives the watchdog recovery.
  • MeshCoreController + MeshCoreBearer.GetStatus() / ResetRadioAsync().

Also fixes a latent trap

/Config model-binds and SaveAsync upserts the whole SystemOptions. Once SaveAsync learned the MeshCore keys (#162), a save from the form — which didn't render them — would have written MeshCore defaults and clobbered the config. Rendering all MeshCore fields in the form fixes that.

Validation

  • Full solution builds clean; 21 MeshCore unit tests pass; config round-trip test covers persistence of every field the form sends.
  • The existing SettingsTests uitest drives /Settings (panel-groups + save round-trip) and its spot-check now includes MeshCoreEnabled/MeshCoreRegion, so CI's ui-test verifies the panel renders + saves.

Builds on #163.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KLbwvhE2cKCe8WPZNg8k17

Make the MeshCore bearer operable from the dashboard, not just DAPPS_MESHCORE_* env vars:
- Settings page: a "MeshCore bearer" panel with every MeshCore option (enable, port,
  region preset, TX power, channel/PSK, node name, airtime budget, compression,
  congestion/LBT, reliability), rendered from and saved back through /Config.
- A live status line (link state, freq/SF/CR, occupancy, delivered, reliability
  confirmed/pending, resets) polling /MeshCore/status, plus a "Reset radio" button
  that drives the watchdog recovery via /MeshCore/reset.
- MeshCoreController: GET /MeshCore/status, POST /MeshCore/reset. MeshCoreBearer
  exposes GetStatus() + ResetRadioAsync().

Also closes a latent trap: /Config model-binds and SaveAsync upserts the WHOLE
SystemOptions, so once SaveAsync learned the MeshCore keys (#162), a save from the
form (which didn't render them) would have written MeshCore defaults and clobbered
the config. Rendering them in the form fixes that.

uitest: the Settings panel-groups spot-check now includes MeshCoreEnabled/Region.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KLbwvhE2cKCe8WPZNg8k17
@M0LTE
M0LTE merged commit 5b06389 into master Jul 1, 2026
4 checks passed
@M0LTE
M0LTE deleted the meshcore-settings-ui branch July 1, 2026 07:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant