aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Restrict stylesheets to Fluorine installHEADmainSulfurNitride2026-06-273-77/+31
|
* Route VFS permissions through COW handlersSulfurNitride2026-06-262-11/+13
|
* Upgrade truncated VFS handles for WineSulfurNitride2026-06-261-0/+55
|
* Fix HKX trace buildSulfurNitride2026-06-261-4/+2
|
* Trace Pandora HKX VFS failuresSulfurNitride2026-06-261-0/+124
|
* Fix VFS mode helper declarationSulfurNitride2026-06-261-0/+1
|
* Expose VFS files as owner writableSulfurNitride2026-06-261-3/+13
|
* Add FUSE volume and xattr compatibilitySulfurNitride2026-06-263-0/+99
|
* Expand FUSE compatibility operationsSulfurNitride2026-06-263-0/+474
|
* Preserve Steam shortcut ID for Game Mode launchesSulfurNitride2026-06-251-8/+23
|
* Log VFS create failuresSulfurNitride2026-06-251-0/+17
|
* Fix VFS not intercepting writes for games on SD cardSulfurNitride2026-06-251-0/+8
| | | | | | | | | | | | | | | | | | | | | 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>
* Fix VFS empty dirs in overwrite and add LOOT Sort buttonSulfurNitride2026-06-247-28/+359
| | | | | | | | | | | | | | | | | | | | | | 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>
* Merge pull request #108 from tristan-iu/openmw-supportSulfurNitride2026-06-243-27/+98
|\ | | | | OpenMW support
| * Don't kill launcher-spawned engine on force-unlock for non-VFS gamestristan-iu2026-06-231-6/+44
| |
| * Forward both stdio channels on native launch to avoid engine SIGPIPEtristan-iu2026-06-231-18/+38
| |
| * Skip FUSE mount for games that manage their own VFStristan-iu2026-06-231-3/+16
| |
* | Fix fuse_req_session CI build errorSulfurNitride2026-06-243-4/+9
| | | | | | | | | | | | | | | | | | 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>
* | Fix shader cache write failures and INI key clobberSulfurNitride2026-06-241-1/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Let Wayland restore main window geometrySulfurNitride2026-06-231-2/+10
| |
* | Fix FOMOD casing and VFS test coverageSulfurNitride2026-06-232-22/+24
| |
* | Fix SLR update settings accessSulfurNitride2026-06-211-7/+13
| |
* | Prompt for SLR updates safelySulfurNitride2026-06-214-41/+288
|/ | | | | | Fixes #98 Addresses #102
* Revert "Disable VFS cache for writable handles"SulfurNitride2026-06-191-6/+2
| | | | This reverts commit 41a336cc8e53ba062ab791ffd6dc9b90d2c72899.
* Disable VFS cache for writable handlesSulfurNitride2026-06-191-2/+6
|
* Fix VFS writes and stylesheet URLsSulfurNitride2026-06-192-24/+77
|
* ensure everything uses new font after applying settingSaghm Rossi2026-06-181-0/+16
|
* utilize font size settingsSaghm Rossi2026-06-183-1/+25
|
* add support for user-configured fontSaghm Rossi2026-06-187-34/+119
|
* Fix bundled font fallbackSulfurNitride2026-06-172-9/+68
|
* Prepare Nexus-safe release cleanupSulfurNitride2026-06-1729-667/+609
|
* Improve Proton launch contextSulfurNitride2026-06-105-17/+130
|
* Improve overwrite VFS case handlingSulfurNitride2026-06-104-31/+383
|
* Fix NuGet cert setup and fontconfig envSulfurNitride2026-06-086-6/+484
|
* clean pgpatcher logs before launchSulfurNitride2026-05-311-0/+2
|
* fix updater restart and log cleanupSulfurNitride2026-05-314-16/+130
|
* Detect Steam Protons across librariesSulfurNitride2026-05-303-15/+62
|
* release: prepare 0.2.3 stableSulfurNitride2026-05-307-82/+295
|
* Reduce FUSE mutation overheadSulfurNitride2026-05-285-47/+209
|
* Add FUSE io_uring toggle and update libfuseSulfurNitride2026-05-283-6/+195
|
* Add FUSE io_uring negotiation and bottleneck loggingSulfurNitride2026-05-273-40/+381
|
* Clarify lazy FUSE read fd handlingSulfurNitride2026-05-271-3/+3
|
* Improve FUSE VFS performance and rename handlingSulfurNitride2026-05-277-42/+467
|
* Require injected xrandr for prefix initSulfurNitride2026-05-261-9/+8
|
* Force SLR for Proton launchesSulfurNitride2026-05-266-84/+112
|
* vfs: bypass userspace lookup cacheSulfurNitride2026-05-241-65/+7
|
* vfs: invalidate ancestor caches on mutationSulfurNitride2026-05-241-46/+70
|
* Update MO2 beta 12 integrationSulfurNitride2026-05-2415-956/+1348
|
* Fix native Stardew launch pathsSulfurNitride2026-05-234-5/+26
|
* startup: clarify invalid instance recoverySulfurNitride2026-05-232-29/+3
|