<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Fluorine-Manager.git/CMakeLists.txt, 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/CMakeLists.txt?h=main</id>
<link rel='self' href='http://git.schererleander.de/Fluorine-Manager.git/atom/CMakeLists.txt?h=main'/>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/'/>
<updated>2026-06-23T21:10:53Z</updated>
<entry>
<title>Fix FOMOD casing and VFS test coverage</title>
<updated>2026-06-23T21:10:53Z</updated>
<author>
<name>SulfurNitride</name>
<email>lukew19@proton.me</email>
</author>
<published>2026-06-23T21:10:53Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=08939441e50e52c685c531a16704fb8f6e1138bd'/>
<id>urn:sha1:08939441e50e52c685c531a16704fb8f6e1138bd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Prepare 0.3.0 release</title>
<updated>2026-06-17T07:08:53Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-06-17T07:08:53Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=46bc9c9d164ace2c4c0d12a28905e83e2dae74a7'/>
<id>urn:sha1:46bc9c9d164ace2c4c0d12a28905e83e2dae74a7</id>
<content type='text'>
</content>
</entry>
<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>release: prepare 0.2.3 stable</title>
<updated>2026-05-30T16:32:29Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-30T16:17:16Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=2464c836085cab832089b0f58c4bd74dfb679603'/>
<id>urn:sha1:2464c836085cab832089b0f58c4bd74dfb679603</id>
<content type='text'>
</content>
</entry>
<entry>
<title>release: prepare 0.2.2 stable</title>
<updated>2026-05-24T18:48:04Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-24T18:48:04Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=f0ce6248b993a5dd30f174571f3cd71a85806592'/>
<id>urn:sha1:f0ce6248b993a5dd30f174571f3cd71a85806592</id>
<content type='text'>
</content>
</entry>
<entry>
<title>release: bump Fluorine version to 0.2.1</title>
<updated>2026-05-19T22:41:32Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-19T22:41:32Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=6ef398ec19212ed28f2312bd7c2f4f71c992e941'/>
<id>urn:sha1:6ef398ec19212ed28f2312bd7c2f4f71c992e941</id>
<content type='text'>
</content>
</entry>
<entry>
<title>updater: SLR auto-update + wire fluorine updater badge, bump 0.2.0</title>
<updated>2026-05-02T18:43:45Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-02T18:43:45Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=8408fc77c1e89637534db62965068572a400a2c6'/>
<id>urn:sha1:8408fc77c1e89637534db62965068572a400a2c6</id>
<content type='text'>
- OrganizerCore: add fluorineUpdater() getter + checkForSlrUpdates()
  fired from startup checkForUpdates(); detached thread runs downloadSlr
  when SLR already installed so steamrt4 BUILD_ID drift is picked up
  without a launch-time stall.
- MainWindow: connect FluorineUpdater::updateAvailable to existing
  updateAvailable() slot so the statusbar badge + actionUpdate light up;
  on_actionUpdate_triggered routes to Settings -&gt; Updates when a Fluorine
  update is pending (the MO2 self-updater path is no-op'd).
- MainWindow launch path: drop !isSlrInstalled() short-circuit; fresh
  installs still get the progress dialog, up-to-date checks rely on the
  startup background pass.
- SettingsDialog: selectTabByLabel() so MainWindow can open Updates tab.
- Launcher: rm -rf update-staging/ once a new bundle has synced into
  bin/, so the in-app updater doesn't accumulate stale extracts.
- CMakeLists.txt: 0.1.4 -&gt; 0.2.0.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix meta.ini duplicate keys and SKSE Log Redirector mapped folders</title>
<updated>2026-05-01T15:09:18Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-01T15:09:18Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=5d1fb2964a172e3444f18ca2ea823ee36784e699'/>
<id>urn:sha1:5d1fb2964a172e3444f18ca2ea823ee36784e699</id>
<content type='text'>
meta.ini: Qt6 QSettings IniFormat is case-sensitive on Linux. Pre-existing
CamelCase keys + lowercase setValue() left both casings in the file, so
mods grew duplicate entries on every install. Added MetaIniUtils::
normalizeMetaIniCase() to fold keys to lowercase and dedupe per-section
(keeping non-empty values) before any QSettings open in readMeta,
saveMeta, doInstall, and createMod.

SKSE Log Redirector: deployExternalMappings created per-file symlinks
under the redirected destination, so any new log file the game wrote
post-deploy ended up as a real file outside the mapping. For
isDirectory &amp;&amp; createTarget mappings, now publish a single directory
symlink dst -&gt; src when the destination is missing, an existing symlink,
or empty. Falls back to per-file symlinks when dst already has real
content (preserves user data). Cleanup removes the symlink, leaving no
files behind.

Tests under src/tests/ (gtest, opt-in via BUILD_TESTING):
- test_metainiutils: 6 tests covering no-op cases, case-only dedup,
  multi-line continuations, per-section scoping, and end-to-end
  verification that QSettings duplication is fixed.
- test_external_dir_mapping: 6 tests covering directory symlink deploy,
  flow-through writes, idempotency, empty-dir replacement, real-file
  fallback, and cleanup.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Finalize Linux build cleanup</title>
<updated>2026-04-29T06:28:24Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-04-29T06:28:24Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=7635739e9ba79a932e5b0e1e708d92eb6ce1ba16'/>
<id>urn:sha1:7635739e9ba79a932e5b0e1e708d92eb6ce1ba16</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Native port of SKSELogRedirector plugin family (sysdmp), default off</title>
<updated>2026-04-29T01:11:14Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-04-29T01:11:14Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=fbfdd7b1171e692a663bf221075abfe0e0ef0ab9'/>
<id>urn:sha1:fbfdd7b1171e692a663bf221075abfe0e0ef0ab9</id>
<content type='text'>
Three FileMapper variants — Steam SSE, GOG, VR — that redirect
&lt;docs&gt;/My Games/&lt;X&gt; onto a sibling folder so SKSE writes logs to the
right place. Only one applies per game; all default off so the user
opts in to the matching variant.

Layout mirrors game_bethesda: shared static lib in src/common/ with the
QObject base (init/author/version/settings/enabledByDefault/mappings),
three plugin .so subdirs each adding Q_PLUGIN_METADATA + their own
name/description and destFolderName override. Q_PLUGIN_METADATA can
only appear once per .so, hence the split.

Paths preserved verbatim from the upstream .py — including the SSE
variant's "Skyrim.INI" sibling folder, which is intentional: a Skyrim
bug sometimes creates a directory of that name and the redirect makes
SKSE find logs in SSE's docs folder.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
