Convert the shared command guard to an async check that refetches /devices when the cached state is older than 30s, so the isDisconnect flag reflects reality before a command runs. A TopSnackBar explains the check only if the fetch takes longer than 400ms, avoiding noise on fast responses. Update all 44 call sites to await the guard.