| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pressure-vessel's default sharing of /run/media and home uses non-recursive
bind mounts that don't propagate FUSE submounts into the container. The
shouldExposeMountPointToPressureVessel function excluded all paths under /run
(isSystemRootPath) and under /run/media (pressureVesselSharesByDefault), so
the fuse.mo2linux mount point was never added to PRESSURE_VESSEL_FILESYSTEMS_RW.
Inside the container, the game saw the real SD card Data directory instead of
the FUSE overlay, so all VFS writes (shader cache, config files, overwrite)
bypassed staging entirely — VFS_staging stayed empty and write-heavy mods like
Community Shaders logged "Failed to save shader" on every compile.
Internal-drive games were unaffected because pressure-vessel's home directory
handling is recursive and propagates FUSE submounts correctly.
Fix: detect fuse.mo2linux in the mountinfo scan and always add it to
PRESSURE_VESSEL_FILESYSTEMS_RW regardless of its parent path classification.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
VFS: Remove physical directory creation from mo2_lookup auto-mkdir.
Previously, any dotless path component that missed the VFS tree was
immediately created on disk, leaving hundreds of empty directories in
overwrite (Shaders/, STRINGS/, DLLPlugins/, etc.) after a session.
Now a phantom virtual node is inserted instead — createFile() already
calls create_directories on the parent path, so the real directory
materialises on disk only when a file is actually written inside it.
mo2_rmdir already handles phantom (disk-absent) directories correctly.
LOOT: Add lootmanager.h/cpp which downloads the latest win64 .7z from
the GitHub releases API, extracts it to ~/.local/share/fluorine/tools/loot/
using the bundled 7zz or any system 7z tool, and exposes isLootInstalled()
/ getLootExePath(). Add a Sort button to the plugins tab that downloads
LOOT on first use (same progress-dialog pattern as SLR) then launches
LOOT.exe hooked through the active Proton via ProcessRunner so it sees
the full merged VFS. Button is hidden for games that don't use LOOT
sorting.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
| |\
| |
| | |
OpenMW support
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
fuse_req_session() is not available in all libfuse3 builds in the CI
image. Instead, store the fuse_session* directly in Mo2FsContext (set
once after fuse_session_new in fuseconnector.cpp) and use ctx->session
in the fuse_lowlevel_notify_inval_inode calls that fix the INI key clobber.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Shader cache (mo2_lookup): Starfield skips mkdir("ShaderCache/Lighting/")
and goes straight to CreateFile("ShaderCache/Lighting/X.pso"). USVFS
handles this by intercepting at Win32 level and auto-creating parent dirs
in overwrite. FUSE operates below the kernel path-resolver, so if a parent
component is missing the kernel returns ENOENT before mo2_create is ever
called. Fix: in mo2_lookup, when a name has no '.' (directory-like) and is
not found in the VFS, auto-create it in staging and return a positive inode
so the kernel can continue resolving the path. createDirectory uses
create_directories internally, so staging parent dirs are also created when
the parent came from overwrite rather than this session.
INI key clobber (mo2_open / mo2_write): keep_cache=1 with AUTO_INVAL_DATA
disabled let the kernel serve stale pre-COW page cache on re-reads. Wine's
WritePrivateProfileString does open→read→close→open(O_TRUNC)→write per key;
after the first write triggered COW, subsequent reads got old cached content,
so each new key was written on top of the original file — only the last key
survived. Fix: call fuse_lowlevel_notify_inval_inode at all four COW and
O_TRUNC paths to flush stale kernel pages precisely at the moment the
backing path changes, without the blanket performance cost of keep_cache=0.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
| | | |
|
| | | |
|
| | | |
|
| |/
|
|
|
|
| |
Fixes #98
Addresses #102
|
| |
|
|
| |
This reverts commit 41a336cc8e53ba062ab791ffd6dc9b90d2c72899.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|