Managed graphics settings are reverted by the game's graphics preset from 26.1
Original description
By MelanX · October 24, 2026Crate: ephervex-options
Commit: 28fa50f6
Behavior
From 26.1 the client has a graphicsPreset option (fast, fancy, fabulous, custom). Right after it loads options.txt, the client calls Options.applyGraphicsPreset(graphicsPreset) on every launch. For fast, fancy and fabulous this writes a fixed value to every option the preset controls; custom leaves them alone. A file without graphicsPreset gets the default, fancy, so the preset runs and replaces whatever the file said for those options.
Ephervex does not know about this coupling. It writes a managed value such as renderClouds:"false" without graphicsPreset, and the client discards it at startup and saves graphicsPreset:"fancy" and renderClouds:"true".
Verified by starting unstarted 26.1.2 (data version 4790) and 26.3 (5023) instances whose options.txt held only Ephervex-written entries. Every entry survived unchanged except renderClouds, which went from "false" to "true" in both. 1.12.2 and 1.20.1 instances kept every entry, since those releases have no preset.
The options the preset sets (from GraphicsPreset.apply in 26.3): ambientOcclusion, biomeBlendRadius, cloudRange, cloudStatus (renderClouds), cutoutLeaves, entityDistanceScaling, entityShadows, improvedTransparency, maxAnisotropyBit, menuBackgroundBlurriness, mipmapLevels, particles, prioritizeChunkUpdates, renderDistance, simulationDistance, textureFiltering and weatherRadius.
Expected behavior
When a managed preference is one of the options the release's graphics preset controls, and the release has graphicsPreset, the written file also stores graphicsPreset:"custom", so the managed value is what the game runs with. The set of preset-controlled options should be derived from the release's own GraphicsPreset bytecode by the analyzer and recorded in the compatibility data, not hard-coded per release. A user who manages graphicsPreset themselves keeps their choice. Releases without the preset are unaffected.
Impact
Any managed value for the options above is silently reverted on the next launch of 26.1 and later, so the instance does not run with the configuration the user selected. Add a regression test that writes a preset-controlled preference for a release with graphicsPreset and asserts graphicsPreset:"custom" is present.