Monitor previously only closed AP on external WiFi STA; late wired uplink
while in AP never fired network-ready, so WS stayed down and AP display
kept flashing. Poll hasInternet() in AP state and call _emitNetworkReady().
Made-with: Cursor
If openclaw.json has no https://*.claw.cutos.ai string, set controlUi
allowedOrigins (loopback + newOrigin), allowInsecureAuth, and
dangerouslyDisableDeviceAuth so factory images need no manual edit.
Otherwise keep replaceOriginStrings behavior.
Made-with: Cursor
- Monitor: every tick in ap state led.off() so play never stays on with hotspot
- hasLanCableCarrier: _ifacePhysicalLinkUp (carrier=1 and operstate not down)
- When end0/eth0 exist but link down, return false (no fallback to hasWiredCarrier)
- LAN poll 500ms
Made-with: Cursor
hasLanCableCarrier no longer locks first scanned iface (NM/WiFi could change
which iface had carrier). Prefer sysfs end0 then eth0 each poll; fallback
hasWiredCarrier only if neither exists.
Made-with: Cursor
First getWiredIfaceWithCarrier() result locks _lanMonitoredIface; subsequent
hasLanCableCarrier only reads that sysfs carrier so unplug reliably turns LAN off.
CLAWD_ETH_IFACE still overrides.
Made-with: Cursor
AP mode no longer periodically terminates WebSocket when hasInternet and
hasWiredInternetProbe both fail; avoids false positives with hotspot + wired
uplink. Reconnect and offline detection rely on Pong, peer close, and TCP.
_connect() still defers new WS when AP and no uplink; close handler UI unchanged.
Made-with: Cursor
unix_dgram to NOTIFY_SOCKET failed on rk3528 (embedded Node), so WATCHDOG=1 never
reached systemd despite WATCHDOG_USEC fallback. Switch to exec systemd-notify with
NOTIFY_SOCKET in child env; unit sets NotifyAccess=all so cgroup may notify.
Users must reload unit (re-run install.sh or add NotifyAccess=all manually).
Made-with: Cursor
Embedded units may set WatchdogSec but omit WATCHDOG_USEC; SD_NOTIFY_INTERVAL was 0 so no
WATCHDOG=1 was sent and systemd killed the main process after ~60s.
Replace StartLimitIntervalSec with StartLimitInterval= for older systemd (journal warning).
Made-with: Cursor
- Add hasWiredInternetProbe and export; AP mode uses it with hasInternet
- systemd-env: strip NOTIFY_SOCKET from env early; client uses unix_dgram
- Strip NOTIFY_SOCKET from frpc/ttyd spawn env in watchdog and frpc
- WS: pong miss debounce; AP net monitor consecutive-fail debounce
Made-with: Cursor
- Scan sysfs for carrier when CLAWD_ETH_IFACE unset (end0/enp* etc.)
- Explicit CLAWD_ETH_IFACE still pins a single interface
- Ping fallback uses -I wired iface when default route fails (e.g. AP on wlan)
- Exclude can/docker/veth/wl* and similar from auto scan
- Clarify client log when waiting for WAN
Made-with: Cursor
- Read gateway token/port via JSON.parse (same structure as former YAML)
- Update claw.cutos.ai origin by replacing URLs in JSON string fields
- Export resolveOpenclawConfigFile() for frpc + client
- Drop js-yaml dependency
- install: ExecStartPre touches openvfd only if nodes exist (3528-friendly)
- Add tools/deploy-rsync.sh for syncing /opt/clawd over SSH
Made-with: Cursor