<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Fluorine-Manager.git/src/tests, 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/src/tests?h=main</id>
<link rel='self' href='http://git.schererleander.de/Fluorine-Manager.git/atom/src/tests?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>Improve overwrite VFS case handling</title>
<updated>2026-06-11T04:56:32Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-06-11T04:56:32Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=c0c7c3b6ab40655dbf354509e5db228ad88b490b'/>
<id>urn:sha1:c0c7c3b6ab40655dbf354509e5db228ad88b490b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reduce FUSE mutation overhead</title>
<updated>2026-05-28T07:44:05Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-28T07:44:05Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=06adc0d1399b73561348d9de9c5e2feba23c5d9d'/>
<id>urn:sha1:06adc0d1399b73561348d9de9c5e2feba23c5d9d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve FUSE VFS performance and rename handling</title>
<updated>2026-05-28T04:36:07Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-28T04:36:07Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=2978356bebd38a3645e82188e94a987f7981d7a3'/>
<id>urn:sha1:2978356bebd38a3645e82188e94a987f7981d7a3</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>meta.ini: revert to upstream CamelCase, canonicalize on read</title>
<updated>2026-05-02T04:12:44Z</updated>
<author>
<name>SulfurNitride</name>
<email>SulfurNitride@users.noreply.github.com</email>
</author>
<published>2026-05-02T04:12:44Z</published>
<link rel='alternate' type='text/html' href='http://git.schererleander.de/Fluorine-Manager.git/commit/?id=4a15d47e96ff5870bb9a1c2f52a7c41e4bf4b63b'/>
<id>urn:sha1:4a15d47e96ff5870bb9a1c2f52a7c41e4bf4b63b</id>
<content type='text'>
Restore upstream MO2's exact key cases (gameName, installationFile,
nexusDescription, etc.) in readMeta/saveMeta/doInstall/createMod —
matches mod-shipped meta.ini cases, so on Linux Qt6's case-sensitive
QSettings IniFormat, setValue updates in place without producing a
duplicate key.

normalizeMetaIniCase() repurposed: instead of folding everything to
lowercase (which mismatched the upstream-style setValue calls and
caused the very dupes it was trying to fix), it now canonicalizes
known per-mod meta.ini keys to their upstream CamelCase, deduping
case-insensitive collisions per section. Cleans up dirty files
written during the 5d1fb29 -&gt; 1f19892 window so they collapse to a
single canonical key per setting on first read.

Tests updated to assert canonical-CamelCase output.

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>
</feed>
