feat: 2.5.1 default xml, improved preset handling, fsmp3 image, dependency guard to prevent config corruption#9
Conversation
…elotons' into default-preset-and-buildable
📝 WalkthroughWalkthroughThe pull request adds a new HDT Skinned Mesh Configs preset file and updates the FSMP MCM script to include dependency verification, preset auto-detection, and version management. Additionally, the build workflow now includes the Logo.dds asset in the distribution package. Changes
Sequence Diagram(s)sequenceDiagram
participant MCM as MCM Script
participant JC as JContainers
participant PU as PapyrusUtil SE
participant CF as Config Files
participant UI as MCM UI
MCM->>MCM: OnConfigInit() triggered
MCM->>JC: JMap.object() test
JC-->>MCM: result received
MCM->>PU: PapyrusUtil.StringArray() test
PU-->>MCM: result received
MCM->>MCM: checkDependencies() evaluates
alt Dependencies OK
MCM->>CF: Load configFilePath
CF-->>MCM: config loaded
MCM->>CF: Check last preset name
CF-->>MCM: preset data
MCM->>MCM: configMatchesPreset() iterate tags
MCM->>MCM: Auto-detect active preset
MCM->>UI: Show config pages
else Dependencies Missing
MCM->>MCM: Build sMissingDependencies string
MCM->>UI: Render disabled "Missing Dependencies" page
MCM->>MCM: Exit early, skip map init
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…M-with-backround-image feat: add support for updated mcm with background image This just updates Github Actions to include the interface folder if it's available in the MCM repo. Does not fail if the folder is missing this needs to be merged before DaymareOn/FSMP-MCM#9 [DaymareOn] It wasn't, my bad. Now it is. Summary by CodeRabbit Chores Improved build workflow resilience by implementing conditional handling for optional dependencies, allowing the build pipeline to continue gracefully without failing when certain components are unavailable.
Changes
MCM script (
FSMPM.psc)checkDependencies()verifies JContainers and PapyrusUtil SE at init. If either is missing, the MCM disables itself and shows a "Missing:<dep>" page instead of corruptingconfigs.xmlwith empty defaultsconfigMatchesPreset()compares current config values against the saved preset (orDefault.xmlas fallback) and clears the preset label if neither matches, so the MCM reflects reality when the XML was edited externallyOnPageReset("")now loadsinterface/FSMP/Logo.ddsviaLoadCustomContent(with early return, matching SkyUI's splash pattern)GetVersion()to302;OnVersionUpdatere-runs init and clears stale preset name on upgradeAssets
SKSE/Plugins/hdtSkinnedMeshConfigs/configsPresets/2.5.1 Default.xml— stock FSMP 2.5.1 values as a selectable presetinterface/FSMP/Logo.dds— MCM welcome-page bannerTest plan
2.5.1 Default.xmlpreset; verify values apply and label shows "Loaded!"configs.xml; reopen MCM and confirm preset label clearsconfigs.xmlis not overwrittenYou can try it by downloading the build here;
https://github.com/DaymareOn/FSMP-MCM/actions/runs/24492378227
Screenshots:

Note, the help section was something I experimented with, but removed. This is to show the dependency guard is working. Also validated configs.xml files were not corrupted.

Debug messages:

With only 1 missing dependency
With both missing dependencies
