- Write the .rdp file through open(newline=), since Path.write_text(newline=)
needs Python 3.10 and CI's checks job runs 3.9
- One .rdp file per address, so overlapping launches can't swap headsets
- xrdp not answering is NotListening, a 400 with its message rather than a
500 filed as an error diagnostic
- /source-image/ lets ClientGone through instead of answering 404 mid-reply
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>