<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Fluorine-Manager.git/libs/nak/src, branch main</title>
<subtitle>A port of MO2 in linux with NaK integration and FUSE based VFS. Comes with Root Builder support by default.</subtitle>
<id>http://git.schererleander.de/Fluorine-Manager.git/atom/libs/nak/src?h=main</id>
<link rel='self' href='http://git.schererleander.de/Fluorine-Manager.git/atom/libs/nak/src?h=main'/>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/'/>
<updated>2026-04-08T08:30:04Z</updated>
<entry>
<title>Remove NaK/Rust dependency, port remaining functionality to native C++</title>
<updated>2026-04-08T08:30:04Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-04-08T08:30:04Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=3de4056df4ea5d0afbcea388ad8d681daea1aac3'/>
<id>urn:sha1:3de4056df4ea5d0afbcea388ad8d681daea1aac3</id>
<content type='text'>
Replace NaK Rust crate and nak_ffi with native C++ implementations:
- Game detection (Steam, Heroic, Bottles), VDF parser, icon extraction
- Prefix symlinks, SLR manager, Steam path detection
- Known games database

Add FUSE VFS optimizations: zero-copy reads via fuse_reply_data,
default_permissions mount option, FUSE_CAP_ASYNC_DIO, FUSE_CAP_EXPIRE_ONLY,
lookup cache parent index, cached mode bits, increased I/O buffer sizes.

Update build system, prefix setup, and various fixes.

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix cabextract not found in pressure-vessel and TTW game detection</title>
<updated>2026-04-03T15:50:22Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-04-03T15:50:22Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=d226c68de9a858a372c5e9a6e83d72dac676559f'/>
<id>urn:sha1:d226c68de9a858a372c5e9a6e83d72dac676559f</id>
<content type='text'>
cabextract: The system binary under /usr is invisible inside the
pressure-vessel container where winetricks runs. Always download a
local copy to ~/.local/share/fluorine/bin/ instead of short-circuiting
when the host has it installed.

TTW: The game plugin was calling the base class identifyGamePath()
which tried matching "TTW" against NaK's detected game names — never
matching "Fallout New Vegas". Now explicitly searches for FNV in the
NaK results, mirroring how the Windows path uses the FalloutNV registry
key. Also adds HAS_NAK_FFI and nak_ffi linkage to the TTW CMake target
since it was previously only defined for the game_gamebryo target.

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix SLR download failures and CMake rebuild detection</title>
<updated>2026-04-01T20:31:43Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-04-01T20:31:43Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=45aefb63e84fd3c75be7b24264885a53f3fb44b8'/>
<id>urn:sha1:45aefb63e84fd3c75be7b24264885a53f3fb44b8</id>
<content type='text'>
Replace SHA256SUMS verification with Content-Length check for SLR
downloads. Valve's CDN frequently serves stale SHA256SUMS that don't
match the current archive, causing persistent checksum mismatches.

Fix CMake DEPENDS for nak_ffi to glob all .rs sources instead of
hardcoding a few files — previously changes to slr.rs (and most other
Rust files) were silently ignored by ninja.

Also wrap prefix init and runtime commands through SLR pressure-vessel
container, and expose Proton install directories to the container.

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add debug logging to game symlink creation</title>
<updated>2026-03-28T21:45:21Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-03-28T21:45:21Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=b48e85b82347f3b8c59a7a3e276c6e5d0c810f10'/>
<id>urn:sha1:b48e85b82347f3b8c59a7a3e276c6e5d0c810f10</id>
<content type='text'>
Log each game's prefix path, detected username, and whether the
Documents/My Games directory exists. Also log when scan_and_link_all
skips a game due to missing directories. This will help diagnose
why some games are not getting their Documents folders symlinked
during prefix setup.

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Search all Steam library folders for game compatdata</title>
<updated>2026-03-28T21:42:33Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-03-28T21:42:33Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=77cd2c8fbff973f6c36386d56fc911f3f86cff9b'/>
<id>urn:sha1:77cd2c8fbff973f6c36386d56fc911f3f86cff9b</id>
<content type='text'>
Steam can place a game's compatdata in a different library folder
than the game itself (e.g. game on SD card, compatdata on internal
storage). Previously we only looked in the same steamapps directory
as the appmanifest, causing games to have no prefix_path and their
Documents/My Games folders to not get symlinked during prefix setup.

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add Steam Linux Runtime (SLR) support + fix Use Proton default</title>
<updated>2026-03-15T10:34:27Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-03-15T10:34:27Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=1b4dd1b718d543a2b6bf29e3209629542744babf'/>
<id>urn:sha1:1b4dd1b718d543a2b6bf29e3209629542744babf</id>
<content type='text'>
Steam Linux Runtime:
- New Rust module (libs/nak/src/slr.rs): download SteamLinuxRuntime_sniper
  from repo.steampowered.com, SHA256 verification, BUILD_ID update checks
- nak_ffi exports: nak_slr_is_installed, nak_slr_get_run_script, nak_download_slr
- ProtonLauncher: wraps Proton launch inside SLR pressure-vessel container
  when enabled (run -- proton waitforexitandrun game.exe)
- Instance Manager: SLR checkbox (default on) beside Steam DRM checkbox
- Main window: pre-check downloads SLR before launch if needed
- Proton settings tab: "Download Steam Linux Runtime" button
- spawn.cpp: reads fluorine/use_slr per-instance INI key
- Logs "Final command:" showing full assembled launch command

Bug fixes:
- Fix Use Proton off by default for plugin executables (executableslist.cpp)
- Fix Use Proton off by default for file tree right-click (filetree.cpp)
- Fix Fedora 43 Qt platform plugin crash: explicit QT_QPA_PLATFORM_PLUGIN_PATH
- Add Qt6::Concurrent to CMakeLists for QtConcurrent background downloads

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Replace wrestool with native Rust PE icon extraction (pelite)</title>
<updated>2026-03-12T18:48:25Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-03-12T18:48:25Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=84a43a2e6afbdfab92c610d47aa75e3876ffacd6'/>
<id>urn:sha1:84a43a2e6afbdfab92c610d47aa75e3876ffacd6</id>
<content type='text'>
- Add icons.rs to nak crate: parses PE resource sections, extracts
  RT_GROUP_ICON/RT_ICON and builds ICO files in memory
- Expose nak_extract_exe_icon() FFI for C++ consumption
- Update iconForExecutable() to use Rust FFI instead of shelling out
  to wrestool; reads all ICO entries for correct color depth
- Fix BasicGamePlugin::gameIcon() to call iconForExecutable() (was
  returning empty QIcon, causing placeholder icons for BG3/Cyberpunk)
- Move app icon setup: setDesktopFileName + setWindowIcon to
  MOApplication constructor (fixes Wayland taskbar/decoration icon)
- Move data/com.fluorine.* to data/icons/, install to XDG paths at
  launch for Wayland compositor icon resolution
- Remove icoutils dependency from Docker image and build output

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>FUSE VFS performance, tracked writes fix, remove steam-run, add NixOS flake</title>
<updated>2026-03-11T07:50:50Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-03-11T07:50:50Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=b1ce38db496c9692bca512e6bd76050ef79f61c2'/>
<id>urn:sha1:b1ce38db496c9692bca512e6bd76050ef79f61c2</id>
<content type='text'>
- 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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Remove umu-run, keep game as child process for Steam tracking</title>
<updated>2026-02-23T23:44:12Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-02-23T23:44:12Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=c360dbf9c42f71e7931c56b7a396ba7f7e9982e6'/>
<id>urn:sha1:c360dbf9c42f71e7931c56b7a396ba7f7e9982e6</id>
<content type='text'>
- 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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix AppImage plugin loading, save timestamps, and INI corruption</title>
<updated>2026-02-21T05:53:26Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-02-21T05:53:26Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=d22d8c267b012729b6b84142def2a30ca4691d7a'/>
<id>urn:sha1:d22d8c267b012729b6b84142def2a30ca4691d7a</id>
<content type='text'>
- 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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
