Skip to content

Harden KVM input and local video recovery#196

Merged
mrjeeves merged 2 commits into
mrjeeves:mainfrom
nathanfraske:codex/core-kvm-durability-20260725
Jul 26, 2026
Merged

Harden KVM input and local video recovery#196
mrjeeves merged 2 commits into
mrjeeves:mainfrom
nathanfraske:codex/core-kvm-durability-20260725

Conversation

@nathanfraske

@nathanfraske nathanfraske commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Keep KVM video sources on absolute pointer coordinates and prevent pointer lock from switching them into relative mouse input.
  • Add a viewer-local software decoder preference and carry it through the local GUI-to-node IPC path.
  • Demote an automatic H.264 NVDEC route to OpenH264 when accepted access units repeatedly produce no pictures.
  • Make GUI backend recovery ownership-aware so it only restarts the node process created by that GUI generation.
  • Prevent CEC Support from launching or reusing desktop capture and input in Windows Session 0.
  • Correct stale internal package versions in the affected lockfiles.

Why

KVM sources consume absolute pointer coordinates, while pointer lock emits relative movement. Native H.264 decoding could also remain wedged when NVDEC accepted input without returning pictures. Backend recovery needed explicit process ownership so a GUI recovery attempt could not terminate an external or service-owned node.

CEC Support's Windows service runs as LocalSystem in Session 0. Its pinned node helper previously reused any node that answered or spawned a new child in the caller's session. The helper now permits a Session 0 service to reuse an existing interactive node, rejects a Session 0 node, and refuses to create a media/input host when the caller is in Session 0.

Scope

This PR changes AllMyStuff only. It does not include the separate CEC Support, NanoKVM, or NanoKVM-Pro work.

The decoder preference and Windows process/session checks are local process IPC. No peer protocol schema, signaling, discovery, rendezvous, SDP, ICE, STUN, or TURN behavior is changed.

This PR does not mark the GUI or node as requireAdministrator. Elevation needs a secured interactive worker and local IPC boundary. A manifest-only change would make startup UAC-dependent and expose the elevated node through the current same-user control pipe.

Validation

  • cargo test -j 16 in node: 215 passed
  • cargo clippy --all-targets -j 16 -- -D warnings in node
  • cargo check --no-default-features --features host -j 16 in node
  • cargo test -j 16 in gui/src-tauri: 7 passed
  • cargo fmt --all -- --check in both Rust workspaces
  • npm run check: 0 errors and 0 warnings
  • npm run build
  • Added-line boundary scan found no signaling-plane terms or protocol schema changes

@mrjeeves
mrjeeves marked this pull request as ready for review July 26, 2026 14:57
@mrjeeves
mrjeeves merged commit a9411ed into mrjeeves:main Jul 26, 2026
14 checks passed
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