Repository navigation
Add Windows client - #2
Merged
Merged
Conversation
Electron client for the existing Mac host (protocol v1, H.264): Bonjour
discovery, PIN login, virtual-display settings, WebCodecs decoding with
ack-based flow control, keyboard/mouse/text input, fullscreen and stats.
- Rewrite the H.264 SPS to declare max_num_reorder_frames = 0.
VideoToolbox omits VUI bitstream_restriction, so Chromium's decoders
buffered a full DPB (4+ frames) before output and deadlocked against
the host's three-frame window ("Waiting for the first frame…" /
"Video decoding stalled"). The host disables reordering, so this is
accurate.
- In fullscreen, capture the Windows key with a low-level keyboard hook
(koffi) and send it to the Mac as Command instead of opening Start.
- CI workflow builds, tests and smoke-tests the packaged app.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Save the current address and port with ☆ Save; saved Macs appear as chips above nearby Macs and fill in the address with one click. Stored in local app data; the PIN is never saved. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…to windows-client
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Electron client for the existing Mac host (protocol v1, H.264, no host changes): Bonjour discovery, PIN login, virtual-display settings, WebCodecs decoding with ack-based flow control, keyboard/mouse/text input, fullscreen and stats. A CI workflow builds, tests and smoke-tests the packaged app.
Fix: stall on "Waiting for the first frame…"
VideoToolbox writes the H.264 SPS without VUI
bitstream_restriction, so Chromium's decoders assume frame reordering and hold 4+ frames before output. That deadlocks against the host's 3-frame in-flight window ("Video decoding stalled"). The client rewrites the SPS to declaremax_num_reorder_frames = 0, which is accurate because the host disables reordering. With a mock host replaying a VideoToolbox-style stream, the first frame went from ~1.0 s (rescued only by the software-decoder fallback) to 26–87 ms on the hardware decoder at 1080p, 1440p and 4K.Windows key → Command in fullscreen
While the stream is fullscreen and focused, a low-level keyboard hook (via
koffi) captures the Windows key and sends it as Mac Command instead of opening Start. Windows+L and Ctrl+Alt+Del stay with the system.Saved Macs
☆ Save next to the port bookmarks an address. Saved Macs show as chips above Nearby Macs and fill in the address and port with one click. The PIN is never stored.
Test plan
npm test(9/9, including SPS rewrite tests)npm run test:smokekoffipackaging)🤖 Generated with Claude Code