Skip to content

fix(settings): explain compatibility-blocked settings - #186

Merged
Zaldaryon merged 4 commits into
mainfrom
fix/issue-166-compat-blocked-settings
Oct 30, 2026
Merged

Zaldaryon merged 4 commits into
mainfrom
fix/issue-166-compat-blocked-settings

Conversation

@Zaldaryon

Copy link
Copy Markdown
Collaborator

Fixes #166

The Extra tab now shows which settings are blocked by the compatibility scan and why. Blocked rows are marked "(unavailable)" and keep their saved value, so the preference applies again once the conflict is gone.

What changed:

  • Blocked features are grouped under the mod that caused the block ("Caused by: OptiTime"), with one plain sentence per feature. The scanner's technical reason, including file paths, stays in the hover text.
  • Scan failures, a missing report and an old report each get their own message. An old report lists every mod that ships shaders or render hooks and tells the player to start through the launcher to refresh it.
  • The report moves to schema 2 and gains featureMods, a list of mod display names per disabled feature, so the UI no longer parses the featureSources strings.
  • The Extra list is a GuiElementContainer, which fixes the scrolling defect where labels moved but selectors and controls stayed in place.
  • extract-patches.sh and regen-one-patch.ps1 pin the myers diff algorithm and skip Properties/AssemblyInfo.cs, and bootstrap no longer copies sources/assets into the repository root.

Testing:

  • Optimum.Tests 806 passed, 34 skipped. Launcher 39, Cli 25, Bootstrap.Core 220 and Installer 104 passed.
  • make check-patches (70 applied, 52 Cecil, 0 conflicts), make check-shaders and make check-compat passed.
  • Manual check on Linux (Xvfb, software GL) with OptiTime installed: Extra tab, scrolled to the bottom, with a schema 1 report and a freshly scanned schema 2 report. The scrollbar thumb tracks the scroll position.
  • The scan-failure layout is covered by unit tests only, not by a screenshot.

Known gap, not part of this PR: the scanner does not read modPaths from clientsettings.json, so mods installed there are not scanned.

Pin the diff algorithm to myers so a user-level diff.algorithm does not
realign unrelated patches. Skip Properties/AssemblyInfo.cs, which bootstrap
rewrites only under build/. Stop bootstrap from copying sources/assets into
the repository root, and ignore that directory.
Bump the shader compatibility report to schema 2 and write featureMods,
a list of display names per disabled feature. The runtime reads them
directly and treats older reports as stale, falling back to the mods that
ship shaders or render hooks.
Mark blocked rows as unavailable with a plain-language hover, and list
them under the mod that caused the block. Keep the technical reason in
the hover and warn when the report comes from an older Optimum. Replace
the scrolling list with a GuiElementContainer so controls scroll with
their labels.
@Zaldaryon
Zaldaryon merged commit 2fbe893 into main Oct 30, 2026
12 checks passed
@Zaldaryon
Zaldaryon deleted the fix/issue-166-compat-blocked-settings branch October 30, 2026 15:33
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.

[Feature] Explain all compatibility-blocked settings

1 participant