fix(mesh): ride out the radio restart during apply — no false errors, no setup modal
Demo images / Build & push demo images (push) Successful in 3m54s

Applying RF settings deliberately restarts the radio daemon (~15-20s).
Two things treated that healthy, expected gap as a fault (operator,
2026-08-06):

- radio_state was single-shot: a query landing inside the restart
  window reported "The radio daemon did not answer the state query"
  for a restart that was working correctly. It now retries for ~30s
  and says the radio is restarting while it waits. A real device-level
  refusal (not an RNode) still returns immediately.
- The device-setup modal auto-opens for any detected-but-unconnected
  port, so the restart looked like a newly plugged stick and
  interrupted the apply. Apply and Reboot now suppress auto-detect for
  90s via mesh.suppressDeviceDetect().

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
archipelago
2026-08-06 09:55:52 -04:00
co-authored by Claude Fable 5
parent 53753687a5
commit f394c02055
3 changed files with 60 additions and 15 deletions
@@ -13,6 +13,8 @@ async function handleReboot() {
rebooting.value = true
rebootError.value = null
rebootMessage.value = null
// Same as apply: the radio goes away on purpose for ~15-20s.
mesh.suppressDeviceDetect()
try {
const res = await mesh.rebootRadio()
// The backend now waits for the device's acknowledgement and says what
@@ -101,6 +103,9 @@ async function loadRnodeConfig() {
async function applyRnodeSettings() {
rnodeApplying.value = true
rnodeResult.value = null
// Applying deliberately restarts the radio daemon; without this the
// "new device detected" modal interrupts the flow mid-apply.
mesh.suppressDeviceDetect()
try {
const res = await mesh.applyRnodeConfig({
enabled: rnodeForm.value.enabled,