CortenDesk 1.0.2
Bug fixes, mostly multi-monitor in the web client.
Multi-monitor
Switching displays in the web client did not work. Three separate faults were stacked on top of each other, which is why it presented as "nothing happens":
- The picture froze. A display switch restarts the host's capture pipeline, leaving the decoder waiting on a stream that had already ended. Because a frozen picture and an unchanged picture look identical, this also hid whether the switch had happened at all. The same recovery already existed for UAC transitions; a display switch was never wired to it.
- Input stayed on the old monitor. The host confirms a switch, then waits for a
CaptureDisplaysmessage before dropping the old capture — for any client reporting a version above 1.2.4, which includes this one. We never sent it, so the old display kept broadcasting and replayed a stale confirmation that reset the display index. Clicks went to the monitor you had just left. The host was also still encoding a display nobody was watching. - The confirmation was ignored. The client discarded the host's reply, so it never learned where the new display sits in the virtual desktop — which is what input coordinates are built from.
Cursor
The mouse cursor got stuck, most noticeably after switching displays. The host sends each cursor bitmap once and refers to it by ID from then on, expecting the client to cache them. The client ignored those IDs, so the cursor froze on whichever shape last arrived as a full bitmap. After a display switch nearly everything arrives as an ID, which is why it looked like a switching problem rather than a cursor one.
Device IDs
IDs are displayed grouped as 123 456 789, so that is what people copy and paste. The spaces are now stripped on entry, from the connect field, the ?id= parameter and device links alike.
Address books
Deleting a user left behind an address book listed as "unknown" that nobody could remove, including administrators. Personal books are now deleted along with their owner. Books already orphaned on an existing install can now be deleted by an administrator.
Shared books are unaffected — access there comes from sharing rules rather than ownership, so they keep working for everyone they were shared with. A live user's personal address book remains private from administrators.
Reported by @dragonidium11 (#14).
Diagnostics
The web client can now log input mapping and display switching to the browser console. Add ?debug=1 to the URL, or set window.__rdDebug = true during a session. Off by default.
Upgrade
No migrations. Upgrading is a tag bump and a restart.
docker pull marcpope/cortendesk:1.0.2
docker pull ghcr.io/marcpope/cortendesk:1.0.2
Requires a running open-source RustDesk server (hbbs/hbbr). No RustDesk license of any kind is needed.