<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Fluorine-Manager.git/libs/game_bethesda, 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/game_bethesda?h=main</id>
<link rel='self' href='http://git.schererleander.de/Fluorine-Manager.git/atom/libs/game_bethesda?h=main'/>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/'/>
<updated>2026-06-17T06:46:09Z</updated>
<entry>
<title>Prepare Nexus-safe release cleanup</title>
<updated>2026-06-17T06:46:09Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-06-17T06:46:09Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=05aa96d20ca726908a7d8b1943f86f0c4e11bf18'/>
<id>urn:sha1:05aa96d20ca726908a7d8b1943f86f0c4e11bf18</id>
<content type='text'>
</content>
</entry>
<entry>
<title>prefix: align dependency setup and VFS fixes</title>
<updated>2026-05-23T14:59:01Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-23T14:59:01Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=7f0ded9e4a6e11b5e0327dd8eb76dd5945b8693d'/>
<id>urn:sha1:7f0ded9e4a6e11b5e0327dd8eb76dd5945b8693d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>mo2: catch up to upstream 2.5.3 Betas 3-11</title>
<updated>2026-05-17T00:51:40Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-17T00:51:40Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=549b84b0f8815737c93913b200dde3821a062cb0'/>
<id>urn:sha1:549b84b0f8815737c93913b200dde3821a062cb0</id>
<content type='text'>
Multi-area sync against the upstream MO2 2.5.3 beta line. Roughly three
logical sections share the diff:

Catch-up (Betas 3-11):
- nxmaccessmanager: drop "supporter" from validRoles so non-premium
  supporters get the right download path (Beta 10)
- mainwindow: disable tutorial triggers at the trigger sites; Qt 6.11
  lockup on child windows (Beta 4)
- basic_games: add Kingdom Come Deliverance 2, Slay the Spire 2
  (Betas 11, 6)
- uibase: add NXM collections parsing fields/accessors + (?:nxm|modl)
  scheme support in NXMUrl (Beta 9)
- Starfield: blueprintPrefix() on IPluginGame; plugins.txt write
  suppression for blueprint plugins; hasInvalidBlueprint /
  hasUnpairedBlueprint diagnoses; Title-keyed content catalog
  consolidation (Betas 3-5)
- downloadmanager + systemtraymanager + organizercore + iuserinterface
  + settings: add Beta 11 "show notifications when downloads complete
  or fail" toggle and the showNotification plumbing
- nxmaccessmanager: restore upstream re-entry guard for OAuth refresh
  and the styled OAuth response page (Beta 11)
- organizer_en.ts and game-bethesda *_en.ts: pull upstream HEAD strings

Workarounds tab removed:
- Delete settingsdialogworkarounds.{h,cpp}; drop the tab in
  settingsdialog.ui; move "Enable archives parsing" into General
- Hardcode GameSettings::forceEnableCoreFiles() to true so the
  primary-master toggle-off bug (DLCs unchecked on tab refresh) can't
  recur; setter becomes a no-op
- No-op stubs for offlineMode, useProxy, useCustomBrowser, Steam
  appID/credentials, executablesBlacklist, skipFileSuffixes,
  skipDirectories — UI gone, accessors keep call sites green
- settingsdialognexus drops the custom-browser wiring; spawn drops the
  "Change the blacklist" Retry path

Beta 9 download manager port:
- fileID-first match in nxmFilesAvailable and
  nxmFileInfoFromMd5Available; filename remains the fallback
- NexusInterface::isActiveFileStatus() helper; rewrite of
  nxmUpdatesAvailable to use pickNewestVersion /
  findUpdateChainSuccessors / resolveInstalledFileId. ARCHIVED_HIDDEN
  now correctly treated as inactive
- std::optional&lt;unsigned int&gt; reservedID on DownloadInfo factories and
  on the three addDownload overloads; startDownloadURLs and
  startDownloadURLWithMeta return the canonical DownloadID instead of
  m_ActiveDownloads.size()-1 (which was the index, not an ID)
- QHash&lt;unsigned int, DownloadInfo*&gt; m_ByID maintained alongside
  m_ActiveDownloads at every mutation site; downloadInfoByID is now
  O(1) via m_ByID.value(id, nullptr)

LOOT remains intentionally stripped (lootcli build cruft cleaned up
separately). BSA wide-path skipped — Linux UTF-8 paths already work.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix VFS rmdir, prefix/launch issues, add version + beta channel</title>
<updated>2026-04-23T21:09:59Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-04-23T21:09:59Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=96a6ba196c72e955c3db822d93da38fce8cd7045'/>
<id>urn:sha1:96a6ba196c72e955c3db822d93da38fce8cd7045</id>
<content type='text'>
- VFS: add mo2_rmdir + OverwriteManager::removeDirectory so Wrye Bash
  shutil.rmtree stops failing with WinError 267 (issue #47).
- FileRenamer: case-insensitive fallback via new resolvePathCaseInsensitive
  walks each path component; bulk hide in Conflict tab no longer dies with
  a misleading "Input/output error" when DirectoryEntry normalised parent
  dir case (issue #54). formatSystemMessage stops aliasing Windows error
  code 5 to errno 5 (EIO).
- Versioning: FLUORINE_VERSION_* + fluorine_build_info.h generated from
  CMake; Linux createVersionInfo returns Fluorine's version. About dialog
  shows Fluorine version + MO2 engine + commit. Beta builds stamp
  "&lt;semver&gt;B&lt;yyyymmddhhmm&gt;" (issue #51).
- CI: ci.yml determines channel from ref (v* tags = stable, main = beta),
  publishes a rolling `beta` GitHub release whose body carries a
  machine-parseable fluorine-meta block (timestamp, commit) for the
  in-app updater.
- Updater: new FluorineUpdater polls GitHub API on startup, compares
  against embedded metadata, notifies on new release without auto-install.
  Channel toggle piggybacks on the existing "beta versions" checkbox.
- Bethesda plugins: determineMyGamesPath no longer creates
  Documents/My Games/&lt;GameName&gt; for every possible title at plugin load;
  only games with a detected install path get their dirs created
  (issue #55).
- Starfield: dataDirectory() on Linux now points at &lt;game&gt;/Data instead
  of My Games/Starfield/Data so the single FUSE mount lands where SFSE
  loads plugins; My Games Data becomes a secondary symlinked mapping
  (issue #56).
- Prefix resolution: prefer Fluorine config, then explicit
  fluorine/prefix_path, then legacy Settings/* keys (with a warning) so
  auto-detected Heroic/Bottles prefixes can't silently override a user-
  configured Fluorine prefix (issue #52). compatDataPathFromPrefix no
  longer hands Proton the wrong parent dir for plain wine prefixes.
- xrandr: ensureXrandrInstalled back-fills the helper for existing SLR
  installs, prefix init runs it before wineboot, SLR wrap exposes
  xrandr-bin via --filesystem= and prepends PATH inside the container
  (issue #49).
- Process tracking: drop the wineserver-as-last-resort fallback that made
  MO2 hang on Proton's session manager after game exit. Rescan the prefix
  for matching game executables instead (covers reparented launcher
  children like f4se_loader → Fallout4.exe). Unlock button now kills
  wineserver for the prefix (SIGTERM then SIGKILL on timeout).

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Sync upstream MO2 2.5.3 Beta 3 fixes</title>
<updated>2026-04-10T11:04:09Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-04-10T11:04:09Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=c9599410b1bd5492c723b3a2e6017ebc6f48a358'/>
<id>urn:sha1:c9599410b1bd5492c723b3a2e6017ebc6f48a358</id>
<content type='text'>
- FO4VR: Add Daytripper4.dll to ESL support detection
- Remove empty categories tooltip when mod has no categories
- Fix QDialogButtonBox/QMessageBox enum mismatch in profile dialogs
- Use refreshESPList(false) after LOOT sort (no full re-read needed)

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<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 build: use QString::fromLocal8Bit instead of QStringEncoder::encode</title>
<updated>2026-03-12T00:14:44Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-03-12T00:14:44Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=100cc592984e14a5f2746b95b19446cb1ff99540'/>
<id>urn:sha1:100cc592984e14a5f2746b95b19446cb1ff99540</id>
<content type='text'>
QStringEncoder::encode() returns DecodedData which can't be directly
assigned to QString in a declaration context. Use fromLocal8Bit() which
is simpler and equivalent for system-encoded byte arrays.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix LOOT disabling plugins: handle Bethesda asterisk format in plugins.txt</title>
<updated>2026-03-11T21:51:28Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-03-11T21:51:28Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=5769638d5c2a32d452610319e0488d3af35fefc3'/>
<id>urn:sha1:5769638d5c2a32d452610319e0488d3af35fefc3</id>
<content type='text'>
LOOT writes plugins.txt in Bethesda format where *Plugin.esp = enabled and
Plugin.esp (no prefix) = disabled. MO2's reader didn't strip the asterisk,
so it tried to find plugins literally named "*Plugin.esp", failed to match,
and marked them all as inactive.

Two-pass approach: detect whether file uses asterisks. If yes (LOOT/Bethesda
format), only *-prefixed plugins are active. If no (MO2's own format), all
listed plugins are active.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Replace lootcli with standalone LOOT GUI AppImage on Linux</title>
<updated>2026-03-07T07:55:46Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-03-07T07:55:46Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=7b3a56ca04e818bd5c1d1998dabde977d960ffe0'/>
<id>urn:sha1:7b3a56ca04e818bd5c1d1998dabde977d960ffe0</id>
<content type='text'>
- 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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
