Add platform-aware IPC transport layer for the launcher protocol:
- transport module: send_request_sync() auto-selects doors (illumos)
or Unix sockets (Linux) at compile time
- doors_transport: uses doors::Client for high-speed synchronous RPC,
gated behind cfg(target_os = "illumos") + "doors" feature flag
- unix_transport: blocking Unix socket client for all platforms
Simplify client binaries to use the sync transport:
- wradm: drops tokio dependency entirely, now fully synchronous
- wrlogin: drops tokio dependency, uses sync transport
- wrsessd: uses shared default_ipc_path() for consistency
The doors crate (0.8.1) is an optional illumos-only dependency.
On Linux, all code compiles and tests pass with Unix socket transport.
Core session management infrastructure for Phase 3:
- Session module: SessionId, SessionToken, SessionState enum with
validated transitions (Creating→Active⇄Suspended→Destroyed),
Session struct with timeout tracking, SessionRegistry with O(1)
lookup by ID and token (10 unit tests)
- Protocol: ClientHello gains optional token field, ServerHello gains
resumed flag and token echo, SessionStatus/SessionEvent enums added
to ControlMessage for session state notifications
- Server: SessionRegistry in headless CalloopData, sessions created on
client connect (with token lookup for resumption), suspended on
disconnect (not destroyed), periodic cleanup of expired sessions
- Client: --token CLI flag, persistent token at ~/.config/wayray/token
with auto-generation (random 16-byte hex), token sent in ClientHello,
resumed state logged from ServerHello
Encoder: xor_diff + encode_region (per damage rectangle).
Decoder: apply_region (decompress + XOR apply to framebuffer).
Both live in wayray-protocol::encoding for shared access.
14 tests including 3 end-to-end round-trip integration tests.
Message types for control, display, and input channels with serde
derives. Length-prefixed postcard codec with encode/decode/framing.
Seven round-trip tests covering all message types and edge cases.