| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- FUSE: disable AUTO_INVAL_DATA, enable readdirplus, 24h TTLs, clone_fd,
FUSE_USE_VERSION=312 — cuts game load time from 2:40 to 1:57
- Fix tracked writes going to wrong (lower-priority) mod in both
detectManualMoves and syncOverwrite
- Remove steam-run entirely (UI, C++, Rust layers)
- Build system: default to tarball, add installer/appimage as opt-in modes
- Add flake.nix for NixOS — builds from source with Rust crates as
separate pure derivations, FHS wrapper, NixOS module with FUSE passthrough
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Download LOOT AppImage from GitHub releases on first sort
- Pre-seed LOOT settings.toml with game type, path, and masterlist URL
- Mount FUSE VFS before launching LOOT, unmount after exit
- Copy plugins.txt/loadorder.txt to LOOT local path and back
- Fix VFS file timestamps (separate error_code for mtime)
- Add directory timestamps to FUSE (was showing 1969)
- Stamp plugin files with load-order-based incrementing timestamps
- Remove WebEngine dependency on Linux (QTextBrowser fallback)
- Enable LOOT sorting for FalloutNV and FalloutTTW
- Add unmountVFS() to OrganizerCore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix "Copy all" log truncation: the code unconditionally stripped 2
chars (\r\n) from formatted log messages, but on Linux spdlog only
appends \n. Every log message lost its last real character. Now
strips trailing \r and \n dynamically.
Enable ccache: it was installed in the Docker image but never
activated. build-inner.sh now auto-detects ccache and sets
CMAKE_*_COMPILER_LAUNCHER. build.sh mounts a persistent ccache
volume (~/.cache/fluorine-ccache) into the container. CI workflow
uses actions/cache to persist ccache across runs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Remove umu-run entirely (crashed due to pressure-vessel/FUSE
incompatibility) — use raw `proton run` instead
- Replace startDetached() with QProcess::start() so the game stays in
Fluorine's process tree. This lets Steam track the game lifetime and
makes the "close game" button work when Fluorine is added as a
non-Steam game.
- Add writeIniValueDirect/readIniValueDirect for safe Bethesda INI
handling without QSettings corruption
- Fix prefix_setup.rs to skip umu-run bootstrapping
- Clean up settings UI, build scripts, and docs for umu-run removal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
| |
The CI was failing because ghcr.io/SulfurNitride/fluorine-builder had
uppercase letters (GHCR requires lowercase). Instead of depending on a
pre-built GHCR image, CI now builds the Docker image from the Dockerfile
each run (matching build.sh), with registry-based layer caching for speed.
Also removes the duplicated inline AppImage logic in favor of build-inner.sh.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add AppConfig::pluginsPath()/dllsPath() that respect MO2_PLUGINS_DIR
and MO2_DLLS_DIR env vars, fixing plugin discovery when plugins live
inside read-only AppImage squashfs (#22, game plugin not found errors)
- Preserve file modification times in save deploy/sync so games display
correct save timestamps instead of all showing the same time (#17)
- Replace QSettings INI reader in saves tab with direct line-by-line
parser to avoid backslash-as-line-continuation corruption of
sLocalSavePath=__MO_Saves\ (#22, saves tab showing wrong directory)
- Add diagnostic logging to plugin symlink creation, save backup/restore
operations to help diagnose silent failures through prefix symlinks
- Fix Python SONAME mismatch in AppImage build (patch portable Python
SONAME to match librunner.so DT_NEEDED, preventing dual libpython load)
- Bundle PyQt6 Qt dependencies, improve RPATH for lib/ and plugins/
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- python: switch Py_InitializeEx → Py_InitializeFromConfig for explicit
error reporting; add dladdr + fprintf diagnostics to trace which DSO
Python symbols resolve to and whether Py_IsInitialized succeeds
- python: log RTLD_NOLOAD vs fresh-load outcome when promoting libpython
to RTLD_GLOBAL
- build: add Docker-based AppImage build script (build.sh), update
Dockerfile and build-inner.sh for AppImage-only workflow
- build: remove Flatpak support entirely; move AppImage metadata
(desktop/metainfo/icon) from flatpak/ to data/
- Add Monster Hunter Wilds basic_games plugin
- .gitignore: exclude squashfs-root, build-source, flatpak-repo,
__pycache__, fomod-plus-settings.ini
- Various Linux port fixes across wineprefix, processrunner, proton
launcher, FUSE connector, instance manager, download manager,
sanitychecks, and NaK Rust paths/runtime_wrap
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use uv as the single Python package manager for Docker, source, and
Flatpak builds. Python 3.13 and pybind11==2.13.6 are now consistent
across all three paths.
- Docker: install uv + build venv instead of python3-dev/pip/pybind11-dev
- CMake: bootstrap pyvenv with uv (REQUIRED/FATAL_ERROR) when no
explicit Python provided; pin pybind11==2.13.6, add sip
- Flatpak: remove pybind11 cmake module, use uv pip install --target
for build deps, uv for portable Python packages
- build-inner.sh: use BUILD_PY throughout, uv pip install for portable
runtime packages, simplify embed check to direct Python invocation
- VFS helper: fall back to shared libfuse3 when static .a unavailable
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
logging, pybind11 warning
- Set $ORIGIN-relative RPATH on binaries so they find libs without
LD_LIBRARY_PATH (fixes #12)
- Check QDir::isAbsolutePath before concatenating instance paths to
prevent doubling of custom portable paths
- Canonicalize paths when matching Proton installations to handle
symlinks in /usr/share/steam/compatibilitytools.d/ (fixes #8)
- Add diagnostic logging for umu-run resolution showing preference,
bundled/system paths, and final selection (helps diagnose #8)
- Warn at CMake time if pybind11 >= 2.14 is detected (documents #9)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
%command% and system Proton scanning
- All data paths migrated from ~/.var/app/com.fluorine.manager/ to
~/.local/share/fluorine/ so native and Flatpak builds share the same
instances, plugins, and configs
- New fluorinepaths.h/.cpp with fluorineDataDir() helper and one-time
migration from old path (writes MOVED.txt breadcrumb)
- New libs/nak/src/paths.rs as Rust equivalent (data_dir())
- Strip %command% tokens from launch wrapper in protonlauncher.cpp
- Always scan /usr/share/steam/compatibilitytools.d/ for system Proton
packages (Arch installs Proton there); add Flatpak filesystem permission
- Native build (build-native.sh) installs to ~/.local/share/fluorine/
with desktop entry and ~/.local/bin symlink instead of portable zip
- build-flatpak.sh wrapper for Flatpak builds
- Fix container locale (LANG=C.UTF-8) for AutoUic warnings
- Fix prefixExists() to handle both compatdata and pfx directory layouts
- Fix globalInstancesRootPath() to use fluorineDataDir() on Linux
- Fix umu-run Flatpak lookup to use fluorineDataDir()
- Update README with build instructions and Arch dependency list
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- New native Root Builder plugin (src/plugins/rootbuilder.py) with copy
and symlink deploy modes, auto-deploy hooks, backup/restore, and
third-party conflict detection that moves incompatible plugins to
DisabledPlugins/. In link mode, .exe/.dll are always copied to avoid
Wine/Proton path resolution issues with symlinked executables.
- Fix basic_games detection on Linux: steam_utils now checks native
Steam paths (~/.local/share/Steam, Flatpak, Snap), epic_utils uses
correct Linux Heroic config paths, gog_utils falls back to Heroic
GOG installed.json when Windows registry is unavailable.
- Fix OMOD installer crash: isArchiveSupported now handles both IFileTree
(from mod list refresh) and string (from install check) arguments.
- Add flatpak manifest step to copy source-tree Python plugins
(src/plugins/*.py) into the build output.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
|
Complete native Linux port with FUSE-based virtual filesystem,
Proton/umu-run integration, and Flatpak packaging.
Key features:
- FUSE VFS replacing Windows USVFS (in-process + standalone helper for Flatpak)
- Proton/GE-Proton/umu-run launcher with env var forwarding
- Flatpak support (sandbox-aware VFS, NXM handler, umu-run)
- Wine prefix management UI
- Case-insensitive path resolution for Linux filesystems
- QSettings-safe INI handling (avoids Bethesda INI corruption)
- Portable instance support with auto-generated launcher scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|