Skip to content

native Mac client added - #3

Merged
sciamop merged 5 commits into
mainfrom
mac-client
Oct 6, 2026
Merged

sciamop merged 5 commits into
mainfrom
mac-client

Conversation

@sciamop

@sciamop sciamop commented Oct 6, 2026

Copy link
Copy Markdown
Owner

because why not (even though macos has good native screen sharing)!!!

sciamop and others added 5 commits October 5, 2026 20:15
Once a process calls CGDisplaySetDisplayMode (or configures a mode for the
session), macOS ignores later CGVirtualDisplay applySettings reshapes, so the
second client shape never took effect and capture targeted a stale display.

- Never select modes explicitly; report a tiny physical size so macOS picks
  the HiDPI variant of each mode by default.
- Create the display once at up to 8K so any shape fits without recreating it
  (recreation raced with macOS reusing the display ID).
- Wait until the display and ScreenCaptureKit both report the new shape before
  capturing; run a real main run loop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Clients that set localCursor in their hello get the system cursor shape
(PNG at 2x + hotspot, in Mac points) whenever it changes, and capture runs
without the cursor, so the pointer can move with zero latency on the client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The host sends cursor shapes and leaves the pointer out of the capture; the
Windows client shows it as a CSS cursor and the Linux client as an SDL color
cursor, so the pointer moves with no network delay. Adds probe support for
inspecting cursor shapes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New iFrameMac target (MacClient/) built by scripts/build-mac-client.sh into
dist/. The host's virtual display follows the window size and full screen;
mouse, trackpad scrolling and every key combo pass through (except ⌃⌥⌘ app
shortcuts); the remote cursor shape becomes the window's real NSCursor.

StreamSession, HostBrowser, SavedHost, theme and stats overlay move to
ClientShared/ so the iPad and Mac apps share them. The iPad app also gets
the local cursor overlay.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sciamop
sciamop merged commit 4cbf5a4 into main Oct 6, 2026
2 checks passed
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