riccardo-sapuppo

Remote Support Console

Decides from pixels alone whether a remote machine is in use, locked or black, arranged around the one mistake that would type a password into somebody’s session.

Area
Operations & tools
Main stack
C# · .NET 9 · WPF · xUnit

Key features

  • • Four answers, not two: in use, locked, black, or nothing handed in
  • • The expensive mistake is weighed differently from the cheap one, and the corpus proves which is which
  • • Frames drawn in code from a fixed seed, five of them reproducing a real misread
  • • The rules that were wrong stay runnable, so an improvement is a count and not a claim
  • • Decided on brightness rather than colour, so a theme cannot change the answer

About the project

Inside a remote-desktop session there is nothing to query, no automation tree, no API, no window titles: the whole session is one bitmap being repainted, so “is anybody logged in?” has to be answered by looking.

The two possible mistakes do not cost the same. Reading a locked machine as in use wastes a click; reading a machine somebody is working in as locked means sending Ctrl+Alt+Del at their session and typing a password into whatever has focus. Everything is arranged around that asymmetry.

The deciding lives in a library of 875 lines with not one using directive — no WPF, no Win32 — so it is built, tested and measured on Linux in CI, against a corpus of frames drawn in code from a fixed seed. Five of those frames reproduce a specific mistake made on a real machine. The version of the rules that was wrong is kept runnable beside the one that ships, so every improvement is a number rather than a claim.

Technologies used

  • C#
  • .NET 9
  • WPF
  • xUnit
  • Image analysis
  • GitHub Actions
main
remote-support-console.mdUTF-8TypeScript