From 613a0e702403d5f8122861bb76a6ba2e184efe97 Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Sun, 22 Mar 2026 14:40:24 -0500 Subject: Multi-dir plugin loading, VFS Root Builder, Wine registry check, column visibility fix Plugin loading: - Remove symlink-based ensureBundledPluginsLinked(), replace with multi-dir search (bundled dir takes priority, instance dir adds extras only) - Auto-clean stale symlinks from instance plugins/ dirs on startup - Add mergedProxyList() for proxy plugin discovery across both dirs VFS Root Builder (replaces Python rootbuilder.py): - Native C++ Root Builder integrated into FuseConnector - Deploy mod Root/ files to game dir before FUSE mount, clear on unmount - Per-instance toggle in Instance Manager (default: on) - Root Builder path normalization in processrunner.cpp: rewrite binary and start-in paths from mods/.../Root/ to Game Root for correct Wine path resolution (fixes SKSE + EngineFixes versionlib lookup) - Expose game dir and prefix to SLR pressure-vessel via --filesystem= Wine registry check: - Read/write Wine prefix system.reg (HKLM) with timestamp-aware parsing - Auto-check game install path before launch, prompt to fix if mismatched - Updates both Software\ and Wow6432Node\ registry keys Column visibility fix: - Guard updateGroupByProxy() during QHeaderView::restoreState() to prevent sort indicator restoration from triggering setSourceModel() which resets all columns to visible Python proxy: - Skip FixGameRegKey.py, crashlogtools, rootbuilder.py (Windows-only or replaced by native implementations) Co-Authored-By: Claude Opus 4.6 (1M context) --- libs/plugin_python/src/proxy/proxypython.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libs/plugin_python/src') diff --git a/libs/plugin_python/src/proxy/proxypython.cpp b/libs/plugin_python/src/proxy/proxypython.cpp index c9c7ba2..6a1430d 100644 --- a/libs/plugin_python/src/proxy/proxypython.cpp +++ b/libs/plugin_python/src/proxy/proxypython.cpp @@ -284,12 +284,18 @@ QStringList ProxyPython::pluginList(const QDir& pluginPath) const // loaded as MO2 plugins. if (baseName == "winreg.py" || baseName == "lzokay.py" || baseName == "FNISPatches.py" || baseName == "FNISTool.py" || - baseName == "FNISToolReset.py") { + baseName == "FNISToolReset.py" || + baseName == "FixGameRegKey.py" || + baseName == "rootbuilder.py") { continue; } result.append(name); } else if (info.isDir() && QDir(info.absoluteFilePath()).exists("__init__.py")) { + // Skip Windows-only directory plugins that use ctypes.windll etc. + if (baseName == "crashlogtools") { + continue; + } result.append(name); } } -- cgit v1.3.1