Skip to content

[MeshCentral - 3]. Remote desktop: multi-monitor Show All grid over a single tunnel - #249

Open
romanivan-flamingo wants to merge 1 commit into
mainfrom
hotfix/remote-multi-monitor
Open

[MeshCentral - 3]. Remote desktop: multi-monitor Show All grid over a single tunnel#249
romanivan-flamingo wants to merge 1 commit into
mainfrom
hotfix/remote-multi-monitor

Conversation

@romanivan-flamingo

Copy link
Copy Markdown
Contributor

Summary

Part of the Remote Access Approval Flow epic (ClickUp 86agfp8w9), subtask [Admin FE] Multi-monitor "Show All" (86ajx03vq). Figma: grid view (1-70900). Spike conclusion and live-test findings are on the ClickUp subtask.

  • Show All grid, single tunnel: selecting All Displays streams the combined virtual desktop (0xFFFF) into the hidden main canvas; each display's rectangle (cmd 82 Display Location Info) is blitted onto its own grid canvas after every tile batch. Pointer input from a grid cell maps back into virtual-desktop coordinates (object-contain math + display offset); keyboard is already window-global. Graceful fallback to the combined single view when the agent sends no geometry.
  • MeshDesktop: mouse/wheel binding extracted into bindPointerInput(canvas, toRemoteXy) shared by the main canvas and display views; new attachDisplayView/detachDisplayView API.

Protocol fixes (pre-existing bugs surfaced by testing against real agents):

  • cmd 82 frames are 14 bytes (no flags word) on real Windows agents - the parser required >=16 and silently dropped ALL display geometry
  • cmd 11 response format is [count, id x N, selected] - the trailing selected word broke the old per-entry size heuristic; rewritten per the observed wire format, merging geometry from cmd 82 (which can arrive before cmd 11)
  • switchDisplay sent UI id 0 on the wire for All Displays instead of 0xFFFF
  • primary-display auto-select now runs once (cmd-82 updates no longer kick the user off an explicit All Displays choice)

Known limitation (escalated to the agent team on the ClickUp subtask): the macOS agent does not respond to cmd 11/82 at all - display switching and the grid are effectively Windows-only until the bundled meshagent supports display enumeration on macOS.

Test plan

  • Verified live: Windows agent (vm117272) - stream + parsers consume real cmd 11/82 frames without errors; macOS agent - stream works, no display list (documented above); no regression in single-display flow
  • Pending a 2-monitor Windows device: grid rendering, per-cell input corner accuracy, All <-> Display N switching (blocked on infra, tracked on the subtask)

🤖 Generated with Claude Code

Selecting All Displays on a multi-monitor device now renders a grid of
per-display views (Figma 1-70900): the tunnel streams the combined
virtual desktop (0xFFFF) into the hidden main canvas, and each display's
cmd-82 rectangle is blitted onto its own canvas after every tile batch,
with pointer input mapped back into virtual-desktop coordinates. Falls
back to the combined single view when the agent sends no geometry.

Protocol fixes surfaced by live testing against real agents:
- cmd 82 arrives as 14-byte frames (no flags word) - the parser
  required 16 bytes and silently dropped every geometry frame
- cmd 11 response is [count, id x N, selected] - the trailing selected
  word broke the per-entry size heuristic; parse the observed format
  and merge in geometry from cmd 82 (which can arrive first)
- switchDisplay sent UI id 0 on the wire for All Displays instead of
  0xFFFF (parseDisplayList maps 0xFFFF to 0 but nothing mapped it back)
- auto-select of the primary display now runs once, so later cmd-82
  updates no longer kick the user off an explicit All Displays choice

Known limitation (escalated to the agent team): the macOS agent does
not answer cmd 11/82 at all, so display switching and the grid are
Windows-only until the bundled meshagent supports it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@romanivan-flamingo
romanivan-flamingo requested a review from a team as a code owner August 18, 2026 16:09
@romanivan-flamingo
romanivan-flamingo requested a review from a team August 18, 2026 16:09
@romanivan-flamingo romanivan-flamingo changed the title Remote desktop: multi-monitor Show All grid over a single tunnel [MeshCentral - 3]. Remote desktop: multi-monitor Show All grid over a single tunnel Aug 18, 2026
@romanivan-flamingo romanivan-flamingo self-assigned this Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant