Skip to content

fix(ui): preserve virtual display and CUDA path state#94

Merged
papi-ux merged 1 commit into
masterfrom
fix/nova-virtual-display-cuda-disabled
Jun 28, 2026
Merged

fix(ui): preserve virtual display and CUDA path state#94
papi-ux merged 1 commit into
masterfrom
fix/nova-virtual-display-cuda-disabled

Conversation

@papi-ux

@papi-ux papi-ux commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • Preserve Polaris game virtual-display recommendations when client settings have no desired/effective display mode instead of silently falling back to headless.
  • Normalize host_virtual_display / virtual_display aliases in the Polaris sync UI so the canonical Host Virtual Display row shows selected/disabled state correctly.
  • Treat session encoder target_device=cuda as GPU-path truth when target_residency is omitted, keeping HUD path copy from looking like CUDA disappeared.

Test Plan

  • RED: targeted regression tests failed before the production fix:
    • virtualRecommendationWinsWhenClientSettingsHaveNoDisplayMode
    • normalizedVirtualDisplayModeSelectsAndDisablesCanonicalRow
    • parseSessionStatus_cudaTargetDeviceImpliesGpuPathWhenResidencyMissing
    • cudaTargetDeviceKeepsGpuPathInStreamModeLabelWhenResidencyMissing
  • PASS: ./gradlew -PnovaAbis=x86_64 :app:testNonRoot_gameDebugUnitTest --tests com.papi.nova.ui.NovaGameDetailUiStateTest --tests com.papi.nova.ui.NovaPolarisSyncUiStateTest --tests com.papi.nova.api.PolarisApiClientParsingTest --tests com.papi.nova.ui.NovaHudUiStateTest
  • PASS: ./gradlew -PnovaAbis=x86_64 :app:testNonRoot_gameDebugUnitTest
  • PASS: ./gradlew -PnovaAbis=x86_64 -PlintFailOnError=true :app:lintNonRoot_gameDebug
  • PASS after submodule init: git submodule update --init --recursive app/src/main/jni/moonlight-core/moonlight-common-c; ./gradlew :app:assembleNonRoot_gameDebug :app:assembleRootDebug -PnovaAbis=arm64-v8a
  • PASS: git diff --check origin/master...HEAD
  • Device state only, no install/stream/deploy: adb saw 98ea526f, Retroid Pocket 6, Android 13.

Scope guard

  • Android API/UI/test files only.
  • No Deck/docs/spikes paths changed.
  • No release, deploy, merge, or stream smoke performed.

Keep blank Polaris client display settings from overriding game virtual-display recommendations, normalize virtual-display aliases in the Polaris sync sheet, and treat CUDA target-device session reports as GPU-path truth when residency is omitted.
@papi-ux papi-ux merged commit 9abc7fb into master Jun 28, 2026
6 checks passed
@papi-ux papi-ux deleted the fix/nova-virtual-display-cuda-disabled branch June 28, 2026 19:55
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.

1 participant