BLS.relayUrl() picks the relay endpoint: bundled server.py keeps
ws://host:8787; served over https or from a subpath it becomes same-origin
wss://host/<base>/ws. Patient/join links are now path-relative so subpath
hosting works. server.py gains --bind and --http-port for reverse-proxy
setups where 8000 is taken.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
easy.html: giant start/stop, plain-word sliders (how fast / how big / how
loud), friendly sound names (Ocean/Beep/Click/Knock), big color dots,
duration chips, live preview strip of the patient view, same safety notice.
Auto-connects to the relay when served over http with a persistent random
room id — patient link is one big copy button, no Detect IP step.
Advanced panel untouched, linked both ways; server opens easy.html first.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>