Skip to content

feat(core): port the HyperDeck TCP server#23

Merged
statik merged 2 commits into
claude/tauri-migration-self-update-74d57gfrom
claude/step-11-tcp-server
Jun 21, 2026
Merged

feat(core): port the HyperDeck TCP server#23
statik merged 2 commits into
claude/tauri-migration-self-update-74d57gfrom
claude/step-11-tcp-server

Conversation

@statik

@statik statik commented Jun 21, 2026

Copy link
Copy Markdown
Member

Step 11 of the Tauri/Rust migration

Ports the HyperDeck TCP server (internal/adapter/driving/hyperdeck/server.go) into hyperdeck-core, completing the protocol runtime.

What's here

  • protocol::Server — accepts controller connections on a TcpListener, greets with the 500 connection info banner, reads single- and block-form command blocks (read_command_block), dispatches via the Responder, and closes on quit. Each connection runs on its own thread over a shared Arc<Deck>.
  • Blanket Transport/Query impls for Arc<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 → send play → assert 200 ok + the recorded space keystroke (via the mock injector + real VirtualDeck). 71 core tests green; fully verified on Linux (std::net); fmt/clippy -D warnings clean.

Why this before the Tauri shell

The shell's main.rs wiring 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

claude added 2 commits June 21, 2026 14:36
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
statik merged commit 0318ebf into claude/tauri-migration-self-update-74d57g Jun 21, 2026
5 checks passed
@statik
statik deleted the claude/step-11-tcp-server branch June 21, 2026 14:42
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.

2 participants