Skip to content

fix(mcm): navigator reliability and settings UI fixes#53

Merged
codepuncher merged 2 commits into
mainfrom
fix/mcm-navigator
Jun 17, 2026
Merged

fix(mcm): navigator reliability and settings UI fixes#53
codepuncher merged 2 commits into
mainfrom
fix/mcm-navigator

Conversation

@codepuncher

Copy link
Copy Markdown
Owner

Summary

  • [MCM-5] Reset g_papyrusEagerScheduled when SKI_ConfigManager is not yet bound, allowing EnsureCachePopulated to retry on the next call rather than wedging permanently
  • [MCM-6] Standardize g_modCache write policy in OpenMod to always-overwrite instead of write-once, so a later GFx snapshot supersedes a stale one
  • [MCM-7] Fix IsFrameworkInstalled to cache only on a positive result — previously a static const bool evaluated once at startup before the framework was loaded, silently disabling the UI
  • [MCM-8] Replace all runtime std::string concatenations for GFx paths with constexpr full-path constants, eliminating per-call heap allocations on navigation and animation-poll paths
  • [MCM-9] Snapshot GetCachedModNames once when the mod dropdown opens rather than re-acquiring the mutex on every rendered frame

Part of the June 2026 audit fix series (#51, #52).

Test plan

  • Build clean (./scripts/build.sh)
  • clang-tidy and clang-format pass (pre-commit hooks)
  • In-game: long-press Start/Back → MCM opens and navigates to configured mod
  • Settings UI mod dropdown populates and selection persists

…not yet bound; standardize g_modCache to always-overwrite; constexpr GFx paths
Copilot AI review requested due to automatic review settings June 17, 2026 11:21

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves the reliability and performance of MCM navigation and the in-game settings UI by fixing cache invalidation/refresh behaviors and reducing per-frame overhead in GFx path handling and mod-name retrieval.

Changes:

  • Fixes SkyUI/framework detection and Papyrus-cache scheduling so MCM caching/navigation can recover from transient initialization states.
  • Replaces runtime GFx path string concatenations with constexpr full-path constants and standardizes mod-cache overwrite behavior from GFx snapshots.
  • Updates the settings UI to snapshot the cached mod-name list only when the dropdown opens (reducing mutex contention per frame).

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
src/MenuUI.cpp Updates framework-installed detection caching and snapshots mod dropdown options on open rather than per-frame.
src/MCMNavigator.cpp Introduces constexpr GFx path constants, overwrites mod cache consistently from GFx, and resets eager Papyrus scheduling on unbound manager.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/MCMNavigator.cpp

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Comment thread src/MenuUI.cpp Outdated
Comment thread src/MCMNavigator.cpp

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@codepuncher codepuncher merged commit 55ed480 into main Jun 17, 2026
11 checks passed
@codepuncher codepuncher deleted the fix/mcm-navigator branch June 17, 2026 14:20
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.

2 participants