Skip to content

fix(settings): stop presets rewriting fps and share panel culling - #245

Merged
papi-ux merged 1 commit into
masterfrom
fix/settings-fps-orthogonal
Aug 20, 2026
Merged

fix(settings): stop presets rewriting fps and share panel culling#245
papi-ux merged 1 commit into
masterfrom
fix/settings-fps-orthogonal

Conversation

@papi-ux

@papi-ux papi-ux commented Aug 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • Quality presets no longer rewrite the saved video frame rate: applying Performance/Balanced/Quality used to silently reset a 120 FPS choice back to 60. Presets now set resolution, bitrate, and codec only, in both the legacy fragment and the Compose settings screen, and StreamPreset loses its fps field. The one legacy migration that read StreamPreset.BALANCED.fps now uses the DEFAULT_FPS constant it always equalled, so migration behavior is unchanged.
  • The Compose settings screen (the default UI) offered 90/120 FPS on panels that cannot present them; only the legacy fragment culled the list. The panel thresholds now live in a shared NovaDisplayFpsCapability (max panel rate, allowed standard values, coerce-down chain), used by both UIs. A stored standard value above the panel ceiling is coerced down once on open, matching the legacy removeEntryFromListAndSetValue semantics; native/custom rates pass through untouched.
  • The Play Setup tuning consequence copy had a dead "balanced" branch while the real "stability" preference fell through to the Auto description. Replaced with a proper stability description; the unused nova_play_setup_pref_balanced string is removed.
  • Preset summary in Settings now states that frame rate is set separately.

Exact candidate

  • Commit: 460f69e837851b4609f2253698acb80c9581a7c3
  • Tree: 49fe729e4485cb65ceebfbf0193fe1bad45dd3ca
  • Parent: ef4e8edbbabeb049eaa3e541a3208d02c0fa51fd
  • Base: ef4e8edbbabeb049eaa3e541a3208d02c0fa51fd (origin/master, v1.3.7)

Verification

  • :app:testNonRoot_gameDebugUnitTest — 1372 tests, 0 failures, 0 errors, 0 skipped (counted from the JUnit XML, including the new NovaDisplayFpsCapabilityTest and NovaStreamPresetUpdatesTest classes)
  • :app:lintNonRoot_gameDebug -PlintFailOnError=true — 0 new errors (baseline noise only)
  • :app:assembleNonRoot_gameDebugAndroidTest — compiles (run because the StreamPreset constructor signature changed; CI never builds this variant)
  • Device QA on the RP6 (deferred to the arc's end-to-end pass: preset switch preserves FPS, Compose and legacy offer the same culled list)

Applying a quality preset silently rewrote the saved video frame rate to
60, so a 120 FPS choice did not survive preset switches. Presets now set
resolution, bitrate, and codec only, in both the legacy fragment and the
Compose settings screen. The one legacy migration that read the preset's
fps now uses the DEFAULT_FPS constant it always equalled, and the fps
field is gone from StreamPreset entirely.

The Compose settings screen, which is the default UI, also offered 90 and
120 FPS on panels that cannot present them; only the legacy fragment
culled the list. The panel thresholds now live in NovaDisplayFpsCapability
and both UIs share them, and a stored standard value above the panel's
ceiling is coerced down once, matching the legacy
removeEntryFromListAndSetValue semantics.

Also replaces the dead "balanced" branch in the Play Setup tuning
consequence copy with the real "stability" preference value, which
previously fell through to the Auto description.
@papi-ux
papi-ux merged commit ba72d2c into master Aug 20, 2026
6 checks passed
@papi-ux
papi-ux deleted the fix/settings-fps-orthogonal branch August 20, 2026 04:38
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