The bootstrap's absolutize branch tested `url.indexOf('http') === 0`, so a
ws:// URL matched neither branch: it does not start with '/' (the relative
branch) and it does not start with 'http' (the absolute branch). It fell
through and was returned untouched, which meant the WebSocket shim below it
was bypassed for every real WebSocket.
baseModelApi.js builds exactly that shape:
new WebSocket(`${proto}${window.location.host}${WS_ENDPOINTS.fetchProgress}`)
so under a reverse-proxy prefix the socket dialled the host root instead of
the prefixed path. Behind SwarmUI (/ComfyBackendDirect/), the root is answered
by the front-end router:
ws://host:7801/ws/fetch-progress -> 302
ws://host:7801/ComfyBackendDirect/ws/fetch-progress -> 101
A 302 fails the upgrade immediately, so showWithProgress() rejected and
auto-organize reported an error after the move had already succeeded.
Accept ws:/wss: in the absolutize branch and compare hosts rather than
origins -- a ws: URL's origin serialises as ws://host, never http://host, so
the origin comparison would have rejected the very case being fixed.
Behaviour change is confined to same-origin ws/wss URLs; external and
http(s) cases are unchanged.
Co-authored-by: Kai <kai@tigersden.net>