- ping the board every 2 s so an unplugged or silent board shows as gone within seconds
- never nudge the pointer right after the board connects or while the phone is not mirroring
- read and log the board's hello (last reset reason, uptime)
- serve the web UI with Cache-Control: no-cache so updates show on refresh
- LLM_TOKEN_PARAM (auto by default) for models that want max_completion_tokens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- calibration finds the pointer at two distances and fits scale and offset; it is saved with the
landings seen while aiming, so every later move is corrected
- search the whole screen when the pointer is far from the target; ignore implausible readings
- rest before lifting a swipe (no momentum) and after a click (no accidental drag)
- detect small changes such as a checkmark, masking the pointer and the status bar
- mirroring counts as live only while the phone is connected to UxPlay (Linux)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>