fix: RC feedback round 2 — kiosk staleness, LND icon+retry, mesh detection surfacing

Kiosk (backgrounds + FIPS mismatch, one root cause each):
- kiosk service now also waits for the web-ui asset swap (probes a large
  bg asset, bounded 60s) — it launched mid-rsync and CSS background 404s
  are never refetched, hence blank backgrounds on first boot
- FipsNetworkCard polls every 15s instead of fetching once on mount
- PWA updates auto-apply on the kiosk (localStorage kiosk flag) — an
  unattended kiosk could never click 'Update Now' and ran stale bundles

LND App Store:
- catalog icon pointed at lnd.svg which doesn't exist (lnd.png does);
  store card also retries the sibling extension before the placeholder
- image pulls retry once after fast transient failures (<30s) — fresh
  first-boot networks reset connections; slow failures aren't retried
  so the UI never waits longer than before

Mesh detection:
- mesh.status now always reports device_present + detected_devices
  (previously only when the service wasn't running, so the UI couldn't
  tell 'no radio' from 'radio present, session connecting')
- Mesh page shows 'Mesh device detected' badge + 'Device detected —
  connecting' status for present-but-not-connected radios
- the 99-mesh-radio.rules udev rule was never staged into the ISO tree
  (installer searched for it and found nothing) — ship it at the media
  root and install it from install-to-disk.sh too

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-07-13 18:41:00 +01:00
co-authored by Claude Fable 5
parent ca89cb4196
commit 00a70c6193
11 changed files with 93 additions and 7 deletions
@@ -278,6 +278,17 @@ if [ -n "$BOOT_MEDIA" ]; then
mkdir -p /mnt/archipelago/etc/archipelago
cp -r "$BOOT_MEDIA/archipelago/apps" /mnt/archipelago/etc/archipelago/
fi
# Mesh radio udev rule: stable /dev/mesh-radio symlink + dialout perms
# for known LoRa USB-serial chips (this installer never shipped it)
for p in "$BOOT_MEDIA/99-mesh-radio.rules" "$BOOT_MEDIA/archipelago/configs/99-mesh-radio.rules"; do
if [ -f "$p" ]; then
mkdir -p /mnt/archipelago/etc/udev/rules.d
cp "$p" /mnt/archipelago/etc/udev/rules.d/99-mesh-radio.rules
chmod 644 /mnt/archipelago/etc/udev/rules.d/99-mesh-radio.rules
break
fi
done
# Create profile.d script for welcome message on login
mkdir -p /mnt/archipelago/etc/profile.d