fix(settings): stop presets rewriting fps and share panel culling - #245
Merged
Conversation
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.
This was referenced Aug 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
StreamPresetloses itsfpsfield. The one legacy migration that readStreamPreset.BALANCED.fpsnow uses theDEFAULT_FPSconstant it always equalled, so migration behavior is unchanged.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 legacyremoveEntryFromListAndSetValuesemantics; native/custom rates pass through untouched."balanced"branch while the real"stability"preference fell through to the Auto description. Replaced with a properstabilitydescription; the unusednova_play_setup_pref_balancedstring is removed.Exact candidate
Commit:460f69e837851b4609f2253698acb80c9581a7c3Tree:49fe729e4485cb65ceebfbf0193fe1bad45dd3caParent:ef4e8edbbabeb049eaa3e541a3208d02c0fa51fdBase: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 newNovaDisplayFpsCapabilityTestandNovaStreamPresetUpdatesTestclasses):app:lintNonRoot_gameDebug -PlintFailOnError=true— 0 new errors (baseline noise only):app:assembleNonRoot_gameDebugAndroidTest— compiles (run because theStreamPresetconstructor signature changed; CI never builds this variant)