feat(core): port the HyperDeck TCP server#23
Merged
statik merged 2 commits intoJun 21, 2026
Conversation
Port internal/adapter/driving/hyperdeck/server.go: protocol::Server accepts controller connections on a TcpListener, greets with the 500 connection-info banner, reads single- and block-form command blocks, dispatches them through the Responder, and closes on quit. Each connection is handled on its own thread over a shared Arc<Deck>. Adds blanket Transport/Query impls for Arc<T> so the shared deck satisfies the inbound ports with cheap per-connection clones. Ported the Go end-to-end server test (TcpListener on 127.0.0.1:0 -> greeting -> "play" -> "200 ok" + recorded keystroke via the mock injector). 71 core tests green; this completes the protocol runtime. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R8X1NxFiaLGJzwUD5wgRTv
CI's newer stable rustfmt expands struct literals in calls; align the committed formatting with it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R8X1NxFiaLGJzwUD5wgRTv
statik
merged commit Jun 21, 2026
0318ebf
into
claude/tauri-migration-self-update-74d57g
5 checks passed
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.
Step 11 of the Tauri/Rust migration
Ports the HyperDeck TCP server (
internal/adapter/driving/hyperdeck/server.go) intohyperdeck-core, completing the protocol runtime.What's here
protocol::Server— accepts controller connections on aTcpListener, greets with the500 connection infobanner, reads single- and block-form command blocks (read_command_block), dispatches via theResponder, and closes onquit. Each connection runs on its own thread over a sharedArc<Deck>.Transport/Queryimpls forArc<T>so the shared deck satisfies the inbound ports with cheap per-connection clones.Tests
Ported the Go end-to-end server test: bind
127.0.0.1:0→ read greeting → sendplay→ assert200 ok+ the recordedspacekeystroke (via the mock injector + realVirtualDeck). 71 core tests green; fully verified on Linux (std::net);fmt/clippy -D warningsclean.Why this before the Tauri shell
The shell's
main.rswiring needs a running server; this is the last piece of genuinely Linux-testable runtime, so it lands verified before the (sandbox-unbuildable) Tauri scaffold.Part of: #10, #11, #12.
Generated by Claude Code