Skip to content

[Mod Manager] - Remake the Mod Manager to be cross-platform and conform to modern standards. - #1288

Draft
TopazTK wants to merge 191 commits into
OpenKH:masterfrom
TopazTK:master
Draft

TopazTK wants to merge 191 commits into
OpenKH:masterfrom
TopazTK:master

Conversation

@TopazTK

@TopazTK TopazTK commented Sep 6, 2026 •

Copy link
Copy Markdown
Contributor

What is this PR?

Simply put, this PR seeks to remake the Mod Manager to be cross-platform, modern, fast, and packed full of features for the user and the developer alike.

The Current Scope

The current scope of this particular PR is to ensure the following:

  • The program chooses simplicity over complexity in all of its aspects.
  • The program has feature parity with the program it replaces.
  • The program works on Windows and Linux Distributions.
  • The program is easy to use with no extra resources or setup necessary.
  • The program is able to work extractionless on PC for all games.

Checklists

The following Checklist is purely for feature parity:

  • Ability to install mods from GitHub and alternative Git hosts in the following formats:
    • Author / Repository
    • Author / Repository : Branch
    • Author / Repository @ Platform
    • Author / Repository : Branch @ Platform
  • Ability to install mods from ZIP Archives for OpenKH mods, KHPCPATCH files, and Lua Scripts.
  • Creation of proper metadata if any non-OpenKH mods are installed.
  • Parsing of metadata for every installed mod and its proper output to the user.
  • Setting the proper info for mods installed from Git sources and displaying them.
  • Ability to parse branch commits and update mods.
  • Memorization of active mods.
  • Ability to remove mods at any time.
  • Ability to reorder mods and memorization of said ordering.
  • Ability to navigate to the source folder of installed mods.
  • Ability to invalidate the current mod builds, reverting the game to a vanilla state.
  • Detection of any updates pending for installed mods, if any.
  • Ability to install any updates pending for installed mods, if any.
  • Ability to hard-patch the games should Panacea not be used.
  • Ability to reverse any hard-patches applied to the game files.
  • Invalidation of any mods with an incorrectly prepared metadata file and the subsequent creation of placeholder metadata.
  • Ability to build mods using extracted game data on PC.
  • Separate building logic for JP vs WW regions on PC.
  • Ability to build mods using extracted game data for PlayStation 2 games.
  • Separate building logic for FM/JP/NTSC/PAL regions for PlayStation 2 games.
  • Ability to build mods using extracted game data for PlayStation Portable games.
  • Separate building logic for FM/JP/NTSC/PAL regions for PlayStation Portable games.
  • Ability to directly run the games on Windows.
  • Ability to run the 1.5 + 2.5 / 2.8 launcher on Windows for all platforms.
  • Ability to run PCSX2 with the Mod Loader injected.
  • Ability to choose what game to apply mods to and subsequent categorization of mods according to the game.
  • Menu Bar and its functionality.
  • Automatic path detection and manual path selection for 1.5 + 2.5 / 2.8 on Windows for both platforms on the Setup Wizard.
  • Page conditions and blocks according to the chosen platform or current action on the Setup Wizard.
  • Panacea installation and subsequent configuration for 1.5 + 2.5 / 2.8 on Windows for both platforms on the Setup Wizard.
  • LuaBackend installation and subsequent configuration for 1.5 + 2.5 / 2.8 on Windows for both platforms on the Setup Wizard.
  • Direct launch configuration for 1.5 + 2.5 / 2.8 on Windows for Steam on the Setup Wizard.
  • Ability to extract files from 1.5 + 2.5 / 2.8 on Windows for both platforms on the Setup Wizard.
  • Ability to cancel file extraction and the subsequence invalidation of it.
  • Ability to extract files from PlayStation 2 games.
  • Ability to extract files from PlayStation Portable games.
  • The existence of the Online Mod Catalog, including:
    • Ability to parse all mods from the curated list. [Invalidated.]
    • Ability to search mods from said curated list. [Invalidated.]
    • Parsing and subsequent output of metadata of all parsed mods.
  • Accurate progress display during mod installation.
  • Error handling and feedback during mod installation.
  • Accurate progress display during mod building.
  • Console output during mod building.
  • Error handling and feedback during mod building.
  • The existence of the YAML Generator Dialog.

This following Checklist is for new features and/or improvements from the old program:

  • Support for Mod Properties on the metadata and their interactions with the end user.
    • Supports the following types of inputs: Toggle, Options.
  • Support for Mod Dependencies on the metadata and their subsequent validation.
    • Informing the user if the dependencies do not exist and allowing them to automatically install them.
  • Support for declaration and verification of the Target Game on the metadata, warning the user if the target game doesn't match the current modlist.
  • Ability to install multiple Git mods at once, retaining the Git format previously mentioned:
    • SomeAuthor/SomeMod ; SomeOtherAuthor/SomeCoolMod@SomePlatform ; ...
  • Addition of Profiles, which are virtual file systems for mods that can co-exist for the same game.
  • Ability to link an existing mod from a profile to another, eliminating the need for a hard-reinstall and saving space.
  • Online Catalog being independent from a curated list, instead parsing mods from GitHub making use of specific topics.
    • Main Topic for mod discovery: openkh-mod
    • Topics for the games: kh1, kh2, recom, bbs, kh3d.
  • Ability to run natively on Linux distributions.
  • Ability to directly run the games on Linux distributions.
  • Preliminary automatic setup of the game prefix for 1.5 + 2.5 / 2.8 on Linux distributions.
  • Automatic path detection and manual path selection for 1.5 + 2.5 / 2.8 on Linux distributions for Steam on the Setup Wizard.
  • Ability to build mods without extracted game data on PC.
  • Automatic region detection for 1.5 + 2.5 / 2.8 on all operating systems and all platforms.
  • Mod installations and building being done with multi-threading, increasing the speeds considerably.
  • Game extractions being done with multi-threading, increasing the speeds considerably.
  • Ability to declare launch arguments for use with 1.5 + 2.5 / 2.8 on all operating systems for Steam.
  • Ability to run the 1.5 + 2.5 / 2.8 launcher on Linux distributions for all platforms.
  • Memorization of the order of disabled mods within the modlists.
  • Automatic sorting of invalid mods to the bottom of the modlists.
  • Existence of the status bar and its featureset:
    • Ability to detect if the configuration (including Panacea) is improper and the subsequent notification to the end user.
    • Ability to detect if mods are installed, prompt to "Build and Run" if so, prompt to "Run" otherwise.
  • Ability to re/install Panacea without the Setup Wizard.
  • Ability to re/install LuaBackend without the Setup Wizard.
  • Dynamic popup system and its featureset, including QUESTION, MESSAGE, INPUT, OPTIONS, and PROGRESS dialogs.
  • Ability to inject the mod loader to the latest versions of PCSX2.
  • Ability to inject the mod loader to PCSX2 on Linux distributions.
  • Ability to run the mod loader without extraction for Kingdom Hearts II - PS2.
  • Ability to build mods without extraction for Kingdom Hearts II - PS2.
  • Ability to run the mod loader without extraction for Kingdom Hearts - PS2.
  • Ability to build mods without extraction for Kingdom Hearts - PS2.
  • Support for the newly released Microsoft Store versions of 1.5+2.5 and 2.8 on Windows.

Readily Compiled Builds

For the sake of convenience, here are the latest builds for Windows and Linux.
They are Proton Drive links because GitHub is ass. The dates of the builds are on the files themselves.

Latest Windows Build: https://drive.proton.me/urls/JXM3R0MFHC#XeLNvMgt83EO
Latest Linux Build: https://drive.proton.me/urls/2P7SJ9CTMM#4LoeJEHRLexz

They are self-contained single-binary builds, as they should be.

Screenshots

image image image image image image image

Currently Present Third Party Libraries

It seems that it is nigh impossible to find any sort of library that is completely free of Generative AI and LLM involvement. As this is the case, I sadly have to compromise.

The following libraries, although they may or may not make use of AI assistance, have high-quality codebases that are human controlled and refactored.
The libraries listed here do NOT allow vibe-coded contributions nor autonomously generated code within their development nor codebase.
This is, quite literally, the best I could do.

Finishing Notes

This PR does NOT make use of any sort of Generative AI or LLMs within its codebase, idea phase, or any other aspect of its development.
Any libraries making use of AI assistance is out of my control.

TopazTK added 30 commits August 29, 2026 05:09
…Io linkage from OpenKh.Patcher to allow Linux deployment.
…ods are always on the bottom, fix some bugs,.
@TopazTK

TopazTK commented Sep 30, 2026

Copy link
Copy Markdown
Contributor Author

Updated all pre-compiled builds to latest.

);

public byte[] ApplyXeeynamosMethod(ReadOnlySpan<byte> input)
public byte[] ApplyLegacyFormatMethod(ReadOnlySpan<byte> input)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

FYI @TopazTK these method name changes broke tests in Kh2Ps2PatchTests. Doesn't seem like any functionality was changed with these, so just updating the function name should fix those tests.

I think... Can't get it to build on Linux because of some weird project configuration.

I think the failing tests are all that the workflow is complaining about???

@TopazTK TopazTK Oct 6, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Tests are known to be broken and all tests regarding OpenKH.Tools.ModManager, OpenKH.Patcher, and OpenKH.Command.BdxIo will be rewritten when everything is done and set in stone.

@TopazTK TopazTK Oct 6, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think... Can't get it to build on Linux because of some weird project configuration.

People have had issues building it on Rider, the problem is Avalonia related, I will try to fix it but no Rider.
I will ask Solt if they can do anything since they did build it on Linux with Rider.

@TopazTK

TopazTK commented Oct 10, 2026

Copy link
Copy Markdown
Contributor Author

Note to try and add support for the Xbox Play Anywhere version:
https://www.xbox.com/en-US/games/store/kingdom-hearts-hd-1-5-2-5-remix/9phfh70f3zrw?ocid=storeforweb

Comment thread OpenKh.Tools.ModManager/ViewModels/CatalogViewModel.cs Fixed
@TopazTK

TopazTK commented Oct 14, 2026

Copy link
Copy Markdown
Contributor Author

I am aware of the new official Epic Games Launcher for Linux distributions. Due to it not working on most distributions at this moment, it won't be supported for now and Heroic will continue to be the default. Support will be added once the launcher is stable enough.

@TopazTK

TopazTK commented Oct 14, 2026

Copy link
Copy Markdown
Contributor Author

Scratch that, due to having only one prefix for ALL games installed through the launcher, the official EGS launcher will NOT be supported for automatic adjustments on Linux. The only support it will have is launching via the URI protocol.

Heroic support will be extended to be close to Steam if possible.

This branch has not been deployed

No deployments
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.

8 participants