diff --git a/CHANGELOG.md b/CHANGELOG.md index 5450ee6..ee4b3cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,63 @@ one of them changed. An entry says which artefact and which version, so `web 0.1 Every version published to a channel appears here. Nothing is written from memory afterwards: a build cannot be published without its entry. +## 2026-10-01 — Remote desktop, fixed: control, RDP sessions and the sign-in screen `web 0.143.0` `agent 0.29.0` + +**Three things `agent 0.28.0` promised did not work on real machines, and this release is the fix for +all three.** The entry below this one describes them as working. They did not, and we found out from +the first customer machines rather than before shipping. Update your agents; the server needs nothing. + +**Control works now. In `0.28.0` it never did, on any machine.** With control granted the viewer said +"You have control", the picture was live, and every click and keystroke was refused by Windows with +"Access is denied". The agent attached to the person's desktop without the one access right Windows +checks before it accepts synthetic input. Reading the screen does not need that right, which is why +everything else looked fine. `0.29.0` asks for it, on the thread that types and on no other. + +**Watching a Remote Desktop (RDP) session works now. In `0.28.0` it never did.** Every attempt ended +in a fraction of a second with "The banner naming you could not be shown on this machine". The agent +took the screen's number from a display Windows invents for background services, and an RDP session +numbers its screens differently, so the notice was never drawn and nothing was captured. Physical +consoles happened to match, which is why laptops worked. The screen now comes from the session that +is about to be watched. If a machine cannot settle on a screen at all, the session ends with "The +machine could no longer capture its screen" and the reason, instead of a notice that never appeared. + +**A machine nobody is signed in to can be watched — and signed in to.** In `0.28.0` it ended with +"There is no desktop session to watch on this machine". Windows does not count a console waiting at +its sign-in screen as an active session, and the agent required an active one. That console is now +what you are shown when nobody is signed in, and it is also the way in to a machine whose owner +closed their RDP window. The notice stands on the sign-in screen as it does everywhere else, and you +sign in by typing into it. Once somebody signs in, the notice moves to their desktop, and the picture +waits until it is standing there. What is still never followed is a person who is already signed in +going to their lock screen or a UAC prompt: the picture pauses there, as before. + +**The agent now sets `SoftwareSASGeneration` on a machine where it is not set — this reverses the +`0.28.0` note below.** A domain-joined machine, and any Windows Server, asks for `Ctrl`+`Alt`+`Del` on +its sign-in screen, and Windows lets a service send it only when this policy allows services. When a +remote-desktop session opens on a machine where the value does not exist at all, `agent 0.29.0` +writes `3` — services, plus the accessibility applications an absent value already allows — and logs +a line saying so in the Windows Application log, source `JarvisAgent`. The limits: + +- A value that exists is never changed. That includes `0`, a value of the wrong type, and anything a + Group Policy wrote; a Group Policy configured later overwrites ours on its next refresh. +- Machines that are never opened in remote desktop are never touched. Installing or updating the + agent writes nothing. +- It is `3`, never `1`: `1` would add services and close the accessibility path Windows leaves open. +- Either value lets every service on the machine send the sequence, not only ours. + +If you do not want that, give the value an answer before anybody watches the machine. `0` forbids +everyone, Jarvis included, and the control is then hidden. Across a domain, the Group Policy +"Disable or enable software Secure Attention Sequence" set to _None_ does the same. + +**What the agent sees now reaches its own log.** The agent's helper already recorded which screen it +chose, which desktop it attached to and why Windows refused an input, and `0.28.0` threw all of it +away. That is how the three failures above shipped without a trace. It now goes to the agent's log — +on Windows the Application event log, source `JarvisAgent` — one line per event, prefixed with the +session's id, at most 200 lines per session. + +**`web 0.143.0`** only corrects one sentence. It is shown when a signed-in person moves to a Windows +security screen, and it said Windows forbids capturing those screens. It does not; the banner naming +you simply cannot follow them there. + ## 2026-10-01 — Remote desktop: watch a Windows machine, and take the mouse `api 0.117.0` `web 0.142.0` `agent 0.28.0` **Remote desktop opens.** **Agents** → a Windows machine → **Watch the screen**, and you see its