Nova v1.4.0
Nova 1.4.0 starts a matched product line with Polaris 1.4.0. Doctor stays evidence-first: frame-pacing observations remain visible without a contradictory Stable state or network blame when media loss and RTT are clean. Raw counters are sampled independently of HUD visibility and streamed only to a capable paired Polaris under the exact active-owner session identity; Nova sends no derived loss percentage, diagnosis, action, or setting. While a stream is active, Nova polls Polaris once per second—faster than the host’s two-second live-evidence window—so Command Center and NovaHUD can show the diagnosis associated with a current adaptive-bitrate change instead of a 15-second-old view. Duplicate-only or static content is not promoted into a pacing diagnosis without source-cadence evidence.
Launch presets are deterministic and carry field-level provenance, including separate width, height, and FPS sources when High FPS locks only cadence. Choosing a resolution now changes width and height only, preserving the resolved stream FPS unless the player explicitly chooses a different FPS target. Nova sends the resolved launch envelope directly with an exact resolved HDR value, preserves a metered bitrate as a one-launch lock, and never consumes history, AI output, or an old recovery record. AI output is informational explanation only and cannot replace measured evidence, confidence, actions, or settings.
Play Setup keeps host-wide choices such as Headless Dongle visible without presenting them as selectable per-game overrides. A stale per-game Headless Dongle choice from an older Nova is retired on upgrade. Pressing a host-only card opens the matching Polaris settings surface, while launch-mode and capture-path descriptions lead with display, privacy, and performance impact before backend terminology; Headless Dongle Privacy blanks the real panel after one-time portal approval is saved, keeps it on during that approval, and Off leaves it active.
Play Setup now remembers each game’s explicit resolution and offers frame rate as an independent row, so choosing one no longer silently rewrites the other. The saved choices are revalidated against the current display and panel capabilities, and unrepresentable pins are retired instead of being applied invisibly. Thanks to Fabian Zettl for contributing the resolution and frame-rate work in #265 and #266.
Every optimize result is bound to the canonical app UUID or ID and the exact topology that will launch. Host default remains distinct from an explicit Desktop choice, and a later mirror/private Steam decision forces re-resolution instead of reusing a different topology’s preflight. Duplicate app titles no longer share a launch-preset preference.
Nova rejects malformed resolved-field provenance and legacy Polaris optimization responses that do not provide both the deterministic resolved-profile and versioned topology-assertion contracts. Host identity is scoped to the launch attempt and fails closed on timeout or ambiguity; only a positively identified stock host may launch without the marker. This prevents Nova 1.4.0 from launching through a Polaris version that could still apply historical or AI-derived settings or ignore a changed host topology.
Pacing offers Recheck or manual guidance. Auto Fix is reserved for authenticated, reversible same-stream bitrate changes backed by measured loss or RTT evidence, with host-side verification and rollback. Legacy next-launch recovery records are deprecated, non-applicable, and cancellable only; they cannot change optimization or launch.
Live Doctor actions and paired bitrate/adaptive controls carry the exact app-session token and numeric stream generation. Nova rejects missing, malformed, stale-generation, or mismatched responses, and a newer singleTask launch intent replaces a validated pre-surface connection instead of inheriting the previous intent’s host, app, or resolved profile.
The HUD is observational and never changes bitrate merely because it is open. Nova does not request or apply an automatic MangoHud, DXVK, VKD3D, or game-process FPS limiter. User-authored host/game settings remain untouched. Steam Input remains manual and read-only.
Game detail keeps Launch as the primary action and gives Play Setup and Reset Game Profile the stronger text treatment. Pin to Home Screen and Artwork Studio are compact, state-aware icon actions, so secondary tools remain available without competing with getting back into the game. Pinned shortcuts now use the selected game’s artwork, loading it off the UI thread and cancelling duplicate requests.
Release packaging
Section titled “Release packaging”- Bumps the Android app to versionName 1.4.0 and versionCode 42 so it installs cleanly over the accepted 1.3.9/41 candidate.
- Publishes signed ARM64, ARMv7, and x86_64 APKs plus portable SHA-256 sidecars through the GitHub release workflow.
Validation notes
Section titled “Validation notes”- The exact release-prep candidate must pass JVM tests, strict lint, public hygiene, and three-ABI release assembly before merge.
- Final publication remains gated on the exact signed ARM64 artifact: package/version identity, signer continuity, preserved-data install and launch on the Retroid Pocket 6, the Control 120 FPS frame-pacing case, read-only Recheck, verified live bitrate Auto Fix/rollback, unchanged relaunch settings, and clean teardown with the host restored.
- Steam Input mutation and hidden game-process limiting remain unavailable.