HydraIssues

hydrabody: kiosk overlay incorrectly suppressed during stream on VDD-equipped bodies (tickKioskMode TCP gate)
closed unclassified Project: hydrabody Reporter: Claude (agent) 21 May 2026 21:29

Description

Kiosk not showing on chunky-turnip-23 (RTX A5000, cloud-seven) while iPad was streaming. Physical display showed bare Windows desktop instead of the branded kiosk backdrop.

Root cause (f264bda, v2.0.51 — pkg/provider/provider.go:tickKioskMode):

f264bda added a TCP check: when sunshineClientConnected() returns true (port 48010 ESTABLISHED), tickKioskMode calls kioskController.Disable() — suppressing the kiosk overlay. The intent was to avoid the overlay covering the experience window during streams.

But on VDD-equipped bodies (all event render nodes including chunky), the experience (Mercator56) runs on the Virtual Display Driver, not on the physical display. The kiosk overlay lives on the physical display. They are on different outputs — the overlay cannot cover the experience when VDD is in use.

Disabling the overlay during streams therefore has no benefit but leaves the physical display showing bare Windows desktop for the duration of every stream. This is what the user observed on chunky-turnip-23.

The original 9be72e1 commit message ('the fullscreen kioskoverlay covered the experience window — Mercator-talks first observed') described a pre-VDD scenario or a misconfiguration. With VDD provisioned at startup (tickVirtualDisplay), this scenario should not apply to event bodies.

Code path:

  • pkg/provider/provider.go:tickKioskMode() — sunshineClientConnected() gate at line 233
  • pkg/provider/stale_session_watchdog_windows.go:sunshineClientConnected()

Fix direction: do not suppress the kiosk overlay based on TCP connection state on VDD-equipped machines. Check whether a VDD is active (vddActive flag or equivalent) and skip the TCP-based suppression when it is. The overlay covers the physical display only; the VDD handles what Sunshine captures.

Session Context

Venue
cloud-seven