feat: NES portrait controller, remote input handler updates

- NESPortraitController layout for vertical phone use
- Updated NESController and NESKeyboard components
- Remote input WebSocket handler and API route registration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-04-01 23:37:55 +01:00
co-authored by Claude Opus 4.6
parent 5c429f9571
commit d2dc803920
6 changed files with 744 additions and 329 deletions
+10
View File
@@ -2,6 +2,7 @@ mod content;
mod dwn;
mod node_message;
mod proxy;
mod remote_input;
mod websocket;
use crate::api::rpc::RpcHandler;
@@ -140,6 +141,15 @@ impl ApiHandler {
return Self::handle_websocket(req, self.state_manager.clone(), self.metrics_store.clone()).await;
}
// Remote input WebSocket — companion app sends keyboard/mouse events
if method == Method::GET && path == "/ws/remote-input" {
if !self.is_authenticated(req.headers()).await {
tracing::warn!("401 WebSocket /ws/remote-input — session invalid or missing");
return Ok(Self::unauthorized());
}
return Self::handle_remote_input(req).await;
}
// Convert body to bytes for non-WS routes
let headers = req.headers().clone();
let (parts, body) = req.into_parts();